Ios 如何在UINavigationBar中添加垂直渐变颜色?
我想在Ios 如何在UINavigationBar中添加垂直渐变颜色?,ios,uinavigationbar,swift4,cagradientlayer,Ios,Uinavigationbar,Swift4,Cagradientlayer,我想在UINavigationBar中添加渐变色。水平渐变的代码工作得很好,但垂直渐变的代码并没有显示正确的颜色 提前谢谢 我当前的垂直坡度代码: extension UINavigationBar { /// Applies a background gradient with the given colors func applyNavigationGradient( colors : [UIColor]) { let gradientLayer = CAG
UINavigationBar
中添加渐变色。水平渐变的代码工作得很好,但垂直渐变的代码并没有显示正确的颜色
提前谢谢
我当前的垂直坡度代码:
extension UINavigationBar {
/// Applies a background gradient with the given colors
func applyNavigationGradient( colors : [UIColor]) {
let gradientLayer = CAGradientLayer()
gradientLayer.frame = self.bounds
gradientLayer.colors = colors.map { $0.cgColor }
// *** for horizontal gradient ***
// gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.5)
// gradientLayer.endPoint = CGPoint(x: 1.0, y: 0.5)
// *** for vertical gradient ***
// gradientLayer.locations = [0,1]
gradientLayer.startPoint = CGPoint(x: 0.5, y: 0.0)
gradientLayer.endPoint = CGPoint(x: 0.5, y: 1.0)
UIGraphicsBeginImageContext(gradientLayer.bounds.size)
gradientLayer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
setBackgroundImage(image, for: UIBarMetrics.default)
}
}
swift 4.1的工作代码。只需将以下内容放在视图中即可:
func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let gradientLayer = CAGradientLayer()
var updatedFrame = self.navigationController!.navigationBar.bounds
updatedFrame.size.height += 20
gradientLayer.frame = updatedFrame
gradientLayer.colors = [UIColor.green.cgColor, UIColor.blue.cgColor]
gradientLayer.startPoint = CGPoint(x: 0.5, y: 0.0) // vertical gradient start
gradientLayer.endPoint = CGPoint(x: 0.5, y: 1.0) // vertical gradient end
UIGraphicsBeginImageContext(gradientLayer.bounds.size)
gradientLayer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
self.navigationController!.navigationBar.setBackgroundImage(image, for: UIBarMetrics.default)
}
swift 4.1的工作代码。只需将以下内容放在视图中即可:
func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let gradientLayer = CAGradientLayer()
var updatedFrame = self.navigationController!.navigationBar.bounds
updatedFrame.size.height += 20
gradientLayer.frame = updatedFrame
gradientLayer.colors = [UIColor.green.cgColor, UIColor.blue.cgColor]
gradientLayer.startPoint = CGPoint(x: 0.5, y: 0.0) // vertical gradient start
gradientLayer.endPoint = CGPoint(x: 0.5, y: 1.0) // vertical gradient end
UIGraphicsBeginImageContext(gradientLayer.bounds.size)
gradientLayer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
self.navigationController!.navigationBar.setBackgroundImage(image, for: UIBarMetrics.default)
}
欢迎,如果这是您想要的,请竖起大拇指,并将其作为一个认可的答案:)应该注意,这对iOS11大标题选项不起作用,对于这方面的渐变,请查看:欢迎,如果这是您想要的,只需竖起大拇指,并将其作为一个认可的答案:)应该注意,这对iOS11大标题选项不起作用,对于这方面的渐变,请查看: