美文网首页
实现渐变色的导航栏设置

实现渐变色的导航栏设置

作者: wangruiyu | 来源:发表于2017-12-05 12:34 被阅读0次
    func setGradientBackgroundColors() {
        let gradient = CAGradientLayer()
        gradient.startPoint = CGPoint(x:0,y:0.8)
        gradient.endPoint   = CGPoint(x:1,y:0.1)
        gradient.locations = [0,1]
        gradient.frame = CGRect(x:0,y:0,width:kScreenW,height:self.navigationBar.bounds.height+kStatusBarH)
        gradient.colors = naviBackgroundCGColors
       self.navigationBar.layer.addSublayer(gradient)
     }
    

    //经过一段时间使用发现,这种写法有问题,当你在NavigationController的某一个childViewController设置self.navigationController.navigationBar.hidden = YES; 即某一个VC中需要隐藏导航栏(我这边是rootViewController需要隐藏),在其他子控制器(未隐藏)设置 self.navigationItem 的 title 或titleView 会出现不显示的问题

    解决方案:
    通过查看图层可以获悉设置背景色的视图类名为 _UIBarBackground 因此,可以不必在navBar中插入子图层 (subLayer) (这也是出现这个bug的原因所在) ,将渐变图层加入到 _UIBarBackground 中,代码如下:
    for sub in self.navigationBar.subviews{
    if sub.isKind(of:(NSClassFromString("_UIBarBackground").self)!){
    sub.layer.addSublayer(gradient)
    }

    相关文章

      网友评论

          本文标题:实现渐变色的导航栏设置

          本文链接:https://www.haomeiwen.com/subject/qooqixtx.html