上划渐变导航条颜色

1.功能需求

刚进入页面导航条背景为透明色,上划一定距离改变导航条颜色为白色(渐变)

2.功能实现

2.1 在viewWillAppera中实现导航条背景色透明

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    // 让控件从(0,0)开始
    self.navigationController.navigationBar.translucent = YES;
    self.navigationController.navigationBar.shadowImage = [UIImage new];
    [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:0];
}
2.2 在scrollView代理方法 scrollViewDidScroll中实现随着滚动改变导航栏颜色透明度
//只要滚动了就会触发
- (void)scrollViewDidScroll:(UIScrollView *)scrollView;{
    // 动态更新navigationBar的颜色
    CGFloat offsetY = scrollView.contentOffset.y;
    if (offsetY > NAVBAR_CHANGE_POINT) {
        CGFloat alpha = MIN(1, 1 - ((NAVBAR_CHANGE_POINT + NavigationHeight - offsetY) / NavigationHeight));
        [self.navigationController.navigationBar setBackgroundImage:[FFCommonView createImageWithColor:[Color_NavigationBar colorWithAlphaComponent:alpha]] forBarMetrics:UIBarMetricsDefault];
        if (alpha == 1) {
            self.navigationController.navigationBar.translucent = NO;
        }else{
            self.navigationController.navigationBar.translucent = YES;
        }
        
    } else {
        [self.navigationController.navigationBar setBackgroundImage:[FFCommonView createImageWithColor:[Color_NavigationBar colorWithAlphaComponent:0]] forBarMetrics:UIBarMetricsDefault];
    }
}

    ps:

    Navbar_change_point为导航条开始渐变色的距离;透明度变为1的时候设置translucent属性为NO

 2.3 在viewWillDeillDisappear中还原之间的一些设置

-(void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    self.navigationController.navigationBar.translucent = NO;
    //界面离开的时候重新设置回原来的样式
    [self.navigationController.navigationBar setBackgroundImage:[FFCommonView createImageWithColor:Color_NavigationBar] forBarMetrics:UIBarMetricsDefault];
}










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值