如何在UINavigationBar上应用渐变颜色?

时间:2016-08-30 20:53:11

标签: ios swift uinavigationbar gradient

我正在尝试在UINavigationBar上应用Gradient Colors Chameleon库。 This教程建议我们可以使用UINavigationBar.appearance()将主题应用于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参数是必需的。有没有办法在一次拍摄中将渐变应用于所有实例?

2 个答案:

答案 0 :(得分: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)

您可以通过将其添加到gradientLayer.colors = [color1, color2]数组

来添加更多颜色

答案 1 :(得分:0)

这是我使用UINavigationBar

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)