美文网首页
navigationBar根据滑动距离实现渐变色

navigationBar根据滑动距离实现渐变色

作者: 小码农杰哥 | 来源:发表于2017-05-11 10:18 被阅读0次

    本人最开始实现的方法是在视图即将显现的方法里面添加隐藏navigationBar,然后

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView

    {

    self.navigationController.navigationBar.hidden=NO;

    CGFloat offsetY = self.scrollView.contentOffset.y;

    self.navigationController.navigationBar.alpha = offsetY/100;

    }

    这样写纯粹是取巧了  效果是//  先是纯透明  然后逐渐显示。

    后面学习的方法:

    navigationBar变为纯透明

    //第一种方法

    //导航栏纯透明

    [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];

    //去掉导航栏底部的黑线

    self.navigationController.navigationBar.shadowImage = [UIImage new];

    //第二种方法

    [[self.navigationBar subviews] objectAtIndex:0].alpha = 0;

    tabBar同理

    [self.tabBar setBackgroundImage:[UIImage new]];

    self.tabBar.shadowImage = [UIImage new];

    navigationBar根据滑动距离的渐变色实现

    //第一种

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView

    {

    CGFloat offsetToShow = 200.0;//滑动多少就完全显示

    CGFloat alpha = 1 - (offsetToShow - scrollView.contentOffset.y) / offsetToShow;

    [[self.navigationController.navigationBar subviews] objectAtIndex:0].alpha = alpha;

    }

    //第二种

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView

    {

    CGFloat offsetToShow = 200.0;

    CGFloat alpha = 1 - (offsetToShow - scrollView.contentOffset.y) / offsetToShow;

    [self.navigationController.navigationBar setShadowImage:[UIImage new]];

    [self.navigationController.navigationBar

    setBackgroundImage:[self imageWithColor:[[UIColor

    orangeColor]colorWithAlphaComponent:alpha]]

    forBarMetrics:UIBarMetricsDefault];

    }

    //生成一张纯色的图片

    - (UIImage *)imageWithColor:(UIColor *)color

    {

    CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);

    UIGraphicsBeginImageContext(rect.size);

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetFillColorWithColor(context, [color CGColor]);

    CGContextFillRect(context, rect);

    UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return theImage;

    }

    相关文章

      网友评论

          本文标题:navigationBar根据滑动距离实现渐变色

          本文链接:https://www.haomeiwen.com/subject/rrhgtxtx.html