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:如果有问题可以回复我一起讨论

你可能感兴趣的:(IOS 导航栏渐变效果,几句代码搞定)