iOS 导航栏滚动渐变

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

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

feiHua不多说!直接上代码

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

.h文件

#import

@protocolNavigationViewDelegate

@optional

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

@end

@interfaceNavigationView :UIView

@property (nonatomic, assign) iddelegate;

@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 导航栏滚动渐变)