我試圖通過創建圖層並將其作爲子圖層添加到導航欄來更改導航欄的背景。但是,這隻影響導航欄。在導航欄和狀態欄上設置漸變
我wan't它影響屏幕的整個頂部。代碼包括:
let navBarLayer = StyleUtils.createGradientLayerWithColors(color: StyleUtils.Colors.SKY_BLUE, frame: (self.navigationController?.navigationBar.bounds)!)
self.navigationController?.navigationBar.layer.addSublayer(navBarLayer)
的createGradientLayerWithColors函數返回給定的幀中的CAGradientLayer。
我錯過了什麼?先謝謝你。
編輯:
我試過納撒尼爾答案,但得到這個:
值得一提的是,這也是一個TableView中。
SOLUTION:
,我發現這個question,幫助我解決了問題。
最後正確的代碼是:
func setNavBarColor() {
let navBar = self.navigationController?.navigationBar
//Make navigation bar transparent
navBar?.setBackgroundImage(UIImage(), for: .default)
navBar?.shadowImage = UIImage()
navBar?.isTranslucent = true
//Create View behind navigation bar and add gradient
let behindView = UIView(frame: CGRect(x: 0, y:0, width: UIApplication.shared.statusBarFrame.width, height: UIApplication.shared.statusBarFrame.height + (navBar?.frame.height)!))
let layerTop = StyleUtils.createGradientLayerWithColors(color: StyleUtils.Colors.SKY_BLUE, frame: behindView.bounds)
behindView.layer.insertSublayer(layerTop, at: 0)
self.navigationController?.view.insertSubview(behindView, belowSubview: navBar!)
}
我把這個方法放到UINavigationController的擴展中,叫做initializeNavBarStyle,它工作得很好! – LargeGlasses