繁体   English   中英

在 iOS 11 Swift 4 上应用渐变后,UINavigationBar 标题和按钮消失

[英]UINavigationBar Title and Buttons disappear after gradient is applied on iOS 11 Swift 4

我最近使用 Swift 4 升级到 Xcode 9,这又更新了所有 iOS 模拟器。 自从更新后,我发现在对 UINavigationBar 应用渐变之后; 标题和按钮不会出现,但仍然具有功能。

这是应用我的渐变的代码 -

extension UIView {

    func applyNavGradient(colours: [UIColor]) -> Void {
       self.applyNavGradient(colours: colours, locations: nil)
    }

    func applyNavGradient(colours: [UIColor], locations: [NSNumber]?) -> Void {
       let gradient: CAGradientLayer = CAGradientLayer()
       gradient.frame = self.bounds
       gradient.colors = colours.map { $0.cgColor }
       gradient.locations = locations
       self.layer.addSublayer(gradient)
       self.backgroundColor = UIColor.clear
    } 
}

class ViewController {

        override func viewDidLoad() {
            UINavigationBar.applyNavGradient(colours: redFade)
        }

这曾经在带有 iOS10 的 Xcode 8 中工作 -

在 iOS 9 之前

现在我得到的就是这个;

使用 iOS 9

谁能给我一些关于为什么这已经改变的线索?

先感谢您!

克里斯。

您可以使用UIColor.init(patternImage image: UIImage)方法来分配barTintColornavigationBar

这是示例代码

func applyNavGradient(colours: [UIColor]) -> UIImage? {

    let gradientLayer: CAGradientLayer = CAGradientLayer()
    gradientLayer.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: navigationController!.navigationBar.frame.size.height + navigationController!.navigationBar.frame.origin.y)
    gradientLayer.colors = colours.map { $0.cgColor }
    gradientLayer.startPoint = CGPoint(x: 0.5, y: 0.0)
    gradientLayer.endPoint = CGPoint(x: 0.5, y: 1.0)

    UIGraphicsBeginImageContext(gradientLayer.bounds.size)
    gradientLayer.render(in: UIGraphicsGetCurrentContext()!)
    let image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return image

}

之后你可以像这样调用来设置渐变

if let img = applyNavGradient(colours: [UIColor.red, UIColor.yellow]) {
    navigationController?.navigationBar.barTintColor = UIColor(patternImage: img)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM