不一样的导航栏渐变

JYJNavigationBar

gitHub地址 https://github.com/jiangyongjian/JYJNavigationBar

最近想买了点基金,同事给我推荐了一款名叫蛋卷的app。然后看了他的导航栏,滑动效果非常好,于是小编也简单模仿了一下。

下面我就大致说说我的思路:首先我想到的是利用系统导航栏相关的做渐变。首先在gitHub上找到 LTNavigationBar 这款用的比较多的导航栏渐变,他是用RunTime 写的。效果是不错的,但是,导航栏全局只有一份,他的滑动返回效果特别差。

根据导航栏全局只有一份,于是小编换了个思路,把导航栏变背景设置成透明,然后监听页面的滚动,自己在self.view加一次view上去。根据滚动,设置透明度。具体实现代码如下:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    CGFloat offsetY = scrollView.contentOffset.y;

    if (offsetY > -imageH + startH) {
        CGFloat alpha = MIN(1, 1 - ((-imageH + startH + 64 - offsetY) / 64));
        self.navBarView.backgroundColor = BXAlphaColor(253, 171, 47, alpha); 
    } else {
        self.navBarView.backgroundColor = BXAlphaColor(253, 171, 47, 0);
    }
    
// ------------------------------华丽的分割线------------------------------------
    // 设置头部放大
    // 向下拽了多少距离
    CGFloat down = - imageH - scrollView.contentOffset.y;
    if (down < 0) return;
    
    CGRect frame = self.headerImage.frame;
    frame.origin.y = - imageH - down;
    frame.size.height = imageH + down;
    self.headerImage.frame = frame;
}

demo我放在gitHub上了,可以去下载看看。https://github.com/jiangyongjian/JYJNavigationBar

联系方式gitHub上有, 小弟不才,出现bug希望大家踊跃联系我,把程序写的更好。有更好的想法,有不明白的联系我。thanks

你可能感兴趣的:(iOS,github,iOS,导航栏)