【发布时间】:2017-09-27 15:51:46
【问题描述】:
在this 问题之后,我可以为UINavigationBar 制作背景渐变,但是当我尝试通过UIAppearance 设置它时,应用程序在didFinishLaunching 中崩溃,因为没有当前@987654325 @。我怎样才能解决这个问题,并且在应用程序委托中仍然拥有我所有的 UIAppearance 代码?
在didFinishLaunching 中的return true 之前调用的代码:
private func setNavBarAppearance() {
let titleAttributes: [NSAttributedStringKey: Any] = [.foregroundColor: UIColor.white]
UINavigationBar.appearance().titleTextAttributes = titleAttributes
UINavigationBar.appearance().barTintColor = .white
UINavigationBar.appearance().tintColor = .white
UINavigationBar.appearance().makeTransparent()
// Set gradient
let colors = [UIColor.lavender.cgColor, UIColor.mint.cgColor]
let gradientLayer = CAGradientLayer()
gradientLayer.frame = UINavigationBar.appearance().bounds
gradientLayer.colors = colors
gradientLayer.startPoint = CGPoint(x: 0, y: 0.5)
gradientLayer.endPoint = CGPoint(x: 0.5, y: 0.5)
let image = UIImage(layer: gradientLayer)
UINavigationBar.appearance().setBackgroundImage(image, for: .default)
}
【问题讨论】:
-
将
UINavigationBar子类化可能是更好的解决方案。
标签: ios swift uiappearance