我正在尝试在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
参数是必需的。有没有办法在一次拍摄中将渐变应用于所有实例?
答案 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)