iosnavigationbar渐变的简单实现

最近在项目里遇到一个和扣扣空间里类似的一个需求,就是刚开始navigatiobbar透明,然后往下拉的时候慢慢的变不透明,后来在网上找了很多资料,但是都实现的太麻烦,后来我一个朋友做过类似的,受她启发,做了一个简单的渐变,希望对大家有帮助。

首先我们肯定要使导航栏透明,这个我网上也看了许多,实现的逼格都太高好麻烦,其实两句代码搞定~

 //对navigationbar透明
    [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
    //这个是去除下面的黑线
    [self.navigationController.navigationBar setShadowImage:[UIImage new]];
当然还有一点需要注意,就是有导航栏的时候,tableview会自动向下偏移64,然后我网上查了资料,又是各种逼格各种原理,好吧我加了一句代码就好了。。。

self.automaticallyAdjustsScrollViewInsets = NO;
那么怎么实现渐变呢,大家会想到根据tableview的竖直偏移量来不断改变alpha,对啊我就是这么实现的

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGFloat offset=scrollView.contentOffset.y;
    if (offset < 30) {
        self.navigationController.navigationBar.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0];
        statusView.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:0];
    }else {
        self.alpha = (myTableView.contentOffset.y - 30)/75;
        
        statusView.backgroundColor = [UIColor colorWithRed:155 green:155 blue:155 alpha:self.alpha];
        self.navigationController.navigationBar.backgroundColor = [UIColor colorWithRed:155 green:155 blue:155 alpha:self.alpha];
    }
}
UITableView继承于UIScrollVIew,于是我们在上面这个方法里写出透明度的改变算法。当然大家会问statusView是什么鬼,这个是状态栏,为神马要设置状态栏呢,大家把带有statusView的代码行给删除掉,就明白了。
statusView.backgroundColor = [UIColor colorWithRed:155 green:155 blue:155 alpha:self.alpha];
        self.navigationController.navigationBar.backgroundColor = [UIColor colorWithRed:155 green:155 blue:155 alpha:self.alpha];
大概实现的原理就这样了,很简单,如果要做其他的一些需求,在这些的基础上修改修改就完事了。写的不好的地方大家可以批评指出,希望给大家点启发,欢迎大家来交流,qq群:410033829。
.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值