[swift]梯度图像设置为 UINavigationBar 背景的问题

发布时间: 2017/3/6 23:34:58
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想设置我的导航栏的梯度图像背景。代码就像这样︰

extension CAGradientLayer {

    class func gradientLayerForBounds(bounds: CGRect, startColor: UIColor, endColor: UIColor) -> CAGradientLayer {
        let layer = CAGradientLayer()
        layer.frame = bounds
        layer.colors = [startColor.CGColor, endColor.CGColor]
        return layer
    }
}

然后在我的视图控制器︰

func imageLayerForGradientBackground() -> UIImage{

        var updatedFrame = self.navigationController!.navigationBar.bounds
        updatedFrame.size.height += 20 //Status bar
        let layer = CAGradientLayer.gradientLayerForBounds(updatedFrame, startColor: UIColor(hexString: "5FD238")!, endColor: UIColor(hexString: "A5E589")!)
        UIGraphicsBeginImageContext(layer.bounds.size)
        layer.renderInContext(UIGraphicsGetCurrentContext()!)
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image

    }

viewDidLoad:

   navigationController!.navigationBar.translucent = false
   navigationController!.navigationBar.tintColor = UIColor.whiteColor()
    navigationController!.navigationBar.setBackgroundImage(imageLayerForGradientBackground(), forBarMetrics: UIBarMetrics.Default)

问题是我下导航栏的所有意见现在都推下通过什么看起来就像导航栏 (如严重绘制图所示) 的高度︰

enter image description here

为什么是这种情况发生?在这任何指针,将不胜感谢 !谢谢你 !

编辑︰

func setupDrawerView() {

        answerDrawerView = AnswerDrawerView(frame: CGRect(x: 0, y: UIScreen.mainScreen().bounds.size.height - AnswerDrawerView.submitTabHeight, width: UIScreen.mainScreen().bounds.size.width, height: UIScreen.mainScreen().bounds.height*0.75))
        answerDrawerView.delegate = self
        view.addSubview(answerDrawerView)
    }

解决方法 1:

这有什么东西也没有跟渐变。它是所有关于这行︰

navigationController!.navigationBar.translucent = false

只要你说的在主视图停止 underlapping 导航栏。您好,定位你的观点绝对而不是使用自动布局,所以由于生物学按钮,让我们说,35 点下跌从顶部的主视图,它仍然是 35 点,下跌从主视图顶部的 — — 但主要视图顶部的现在是底部的导航栏。因此差距。

这个故事的寓意︰ 使用自动布局 !这种情况完全是它意味着什么。顶部的布局指南,不视图顶部的主,你意见的位置,一切都会好。

官方微信
官方QQ群
31647020