iosnavigationbar渐变的简单实现

来源:互联网 发布:收趣云书签 mac 编辑:程序博客网 时间:2024/06/14 09:51

最近在项目里遇到一个和扣扣空间里类似的一个需求,就是刚开始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
原创粉丝点击