2016-08-30 21 views
2

我想在UINavigationBar上應用Chameleon庫的Gradient ColorsThis教程建議我們可以通過使用UINavigationBar.appearance()將主題應用於UINavigationBar的所有實例。因此,這意味着我可以這樣做以下設置梯度:如何在UINavigationBar上應用漸變顏色?

UINavigationBar.appearance().barTintColor = UIColor(gradientStyle:UIGradientStyle.LeftToRight, 
    withFrame: CGRectMake(0, 0, UINavigationBar.appearance().frame.width, UINavigationBar.appearance().frame.height), 
    andColors:[UIColor.flatMagentaColorDark(), UIColor.flatLimeColor()]) 

但問題是,我不能夠得到高度和UINavigationBar的實例的寬度。上述代碼中需要參數withFrame。有沒有辦法將漸變應用於所有實例?

+0

如果將顏色設置爲簡單的紅色,此代碼是否工作? – Mike

回答

1

這是我做過什麼用Chameleon

let primaryGradientColor: UIColor = { 
    let sizeLength = UIScreen.mainScreen().bounds.size.height * 2 
    let defaultNavigationBarFrame = CGRectMake(0, 0, sizeLength, 64) 
    let colors = [UIColor.flatMagentaColorDark(), UIColor.flatLimeColor()] 
    return GradientColor(.LeftToRight, frame: defaultNavigationBarFrame, colors: colors) 
}() 

Chameleon.setGlobalThemeUsingPrimaryColor(primaryGradientColor, 
               withSecondaryColor: UIColor.clearColor(), 
               andContentStyle: UIContentStyle.Light) 
2

下面是一個辦法做到這一點

let gradientLayer = CAGradientLayer() 
self.navigationController!.navigationBar.backgroundColor = UIColor.greenColor() 
gradientLayer.frame = self.navigationController!.navigationBar.bounds 

let color1 = UIColor.yellowColor().CGColor as CGColorRef 
let color2 = UIColor(red: 1.0, green: 0, blue: 0, alpha: 1.0).CGColor as CGColorRef 
gradientLayer.colors = [color1, color2] 
gradientLayer.locations = [0.0, 0.25, 0.75, 1.0] 
self.navigationController!.navigationBar.layer.addSublayer(gradientLayer) 

您可以添加更多的色彩上UINavigationBar應用漸變的顏色將它們添加到gradientLayer.colors = [color1, color2]陣列

+0

我正在運行iOS 9.3,並注意到'gradientLayer'最終隱藏了後退按鈕文本(但不是人字形)。加載後,我循環遍歷UINavigationBar子圖層,並且漸變圖層始終位於文本圖層上方。 – neonhomer