IOS 导航栏渐变效果,几句代码搞定

最近在做项目,UI要求做一个导航栏随着ScrollView滚动而渐变的效果,所以开始研究怎么最简洁的方法来实现这个效果.到最后发现几句代码就能搞定,现在分享给大家,我用的是Swift3.0.用OC的可以按照写法转换成OC语句即可

1.首先需要将导航栏设置成透明

        //在ViewDidLoad中设置导航栏需要显示的主题颜色
        self.navigationController?.navigationBar.barTintColor = RGBA(R: 255, G: 90, B: 84, A: 1)
        //将navigationBar的第一个View,透明度设置成0,这样就可以实现导航栏透明,
        //第一个View指的是导航栏+信息栏的64px的View
        self.navigationController?.navigationBar.subviews[0].alpha = 0

2.在滚动的时候计算需要显示的透明度

    //实现ScrollView的代理方法,TableViewS自继承ScrollView,
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        
        //获取ScrollView的偏移量y
        let offsetY = scrollView.contentOffset.y
        print(offsetY)
        //自己设置需要滚动到哪里可以完全显示导航栏
        let ScrollValue:CGFloat = 64.0
        //将偏移量除以需要滚动的量,可以得到需要显示的透明度
        var alpha = offsetY / ScrollValue
        if alpha >= 1{
            alpha = 1
        }
        //将透明度赋值给第一个View即可
        self.navigationController?.navigationBar.subviews[0].alpha = alpha
        
    }

上面几句代码即可完成导航栏的渐变效果.有兴趣的可以采取这种方法试一试.

px:如果有问题可以回复我一起讨论

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 静坐常思己过,闲谈莫论他人是非,不论人是非,不道人长短。
    木子禾雨阅读 210评论 0 0
  • 买了张VIP票, 包了电影院, 光线暗黑,屏幕亮起,倒映出孤影。 买了张船票, 包了大游船, 空间辽阔,水面如镜,...
    暖笑如云阅读 333评论 0 0
  • 芒格对心理学有着浓厚的兴趣,他在看了影响力这本书后,受到驱动,把以前的训练和经验综合起来,诞生了他的非临床、非先天...
    RIARONG阅读 740评论 3 3
  • 這個地方很完美,但我却知道,世上沒有十全十美,天下也没有不散的宴席。 有一个地方,永远没有悲伤,处处欢声笑语,我知...
    黑色剪影阅读 216评论 0 0
  • 丝丝望有影,细细听无声。 润菊露华重,随风秋叶轻。 出门搓手暖,入眼豁心明。 冒雨踏车去,爽怀行几程。
    雪窗_武立之阅读 189评论 1 2