美文网首页
iOS 导航栏滚动渐变

iOS 导航栏滚动渐变

作者: 吉s她Hmm | 来源:发表于2019-10-09 11:25 被阅读0次

    记录一下今天遇见的一个小需求!

    需要做一个滚动导航栏渐变 紫色滚动白色 在白色变回紫色!

    feiHua不多说!直接上代码

    首先我封装了一个View  在这个View里面写一个代理 因为我的需求导航栏上面的按钮是可以点击操作的!然后在自定义一个方法用于变色!

    .h文件

    #import

    @protocolNavigationViewDelegate

    @optional

    - (void)navigationViewClicked:(UIButton*)btn;

    @end

    @interfaceNavigationView :UIView

    @property (nonatomic, assign) id<NavigationViewDelegate>delegate;

    @property(nonatomic, strong) UIButton *messageButton;

    @property(nonatomic, strong) UIButton *storeButton;

    - (void)scrollColorChangeNavigationWithOffset:(CGPoint)Offset;

    @end

    .m文件核心代码

    #pragma mark - 渐变nav

    - (void)scrollColorChangeNavigationWithOffset:(CGPoint)Offset

    {

        NSLog(@"======+++++%f",Offset.y);

        CAGradientLayer *gradient = [CAGradientLayer layer];

        gradient.hidden=YES;

        //动态获取手机导航栏高度

        CGFloat  statusHeight =kStatusHeight+44;

        CGFloat  alpha = ((statusHeight-(Offset.y<= statusHeight ? Offset.y: statusHeight))/statusHeight);

    NSLog(@"_______%f",alpha);

        self.backgroundColor = [[UIColor colorWithRed:130/255.0 green:3/255.0 blue:124/255.0 alpha:1]colorWithAlphaComponent:alpha];

    }

    在你需要变色的控制器遵循试图滚动的代理方法

    #pragma mark -- 懒加载

    // 创建Navigation

    - (NavigationView*)navigationView

    {

        if (!_navigationView)

        {

            self.navigationView = [[NavigationView alloc]initWithFrame:CGRectMake(0,0,WIDTH,kStatusHeight+44)];

            UIColor *color = [UIColor  colorWithRed:126/255.0 green:100/255.0 blue:30/255.0 alpha:1];

            _navigationView.backgroundColor = [color colorWithAlphaComponent:1];

            _navigationView.delegate = self;

            [self.navigationController.view addSubview:_navigationView];

        }

        return _navigationView;

    }

    #pragma mark - 导航栏渐变

    - (void)scrollViewDidScroll:(UIScrollView*)scrollView

    {

        scrollViewContentOffset = scrollView.contentOffset.y;

        //改变Nav颜色&图标颜色

        [self.navigationView scrollColorChangeNavigationWithOffset:scrollView.contentOffset];

    }

    如果别的控制器不需要变色 在页面即将出现的时候添加navigationView 即将消失的时候删除就行了!  (菜鸟指导,大神勿喷!)

    ----------------------------梦想是工程师的少年---------------------------

    最后感谢你的观看!有什么不足 请指导!

    相关文章

      网友评论

          本文标题:iOS 导航栏滚动渐变

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