我正在尝试在视图和按钮上应用渐变颜色,但是我面临一个问题,即它不能应用于按钮和视图的整个框架,如您在屏幕截图中所见。我自定义的十六进制颜色值,
func applyGradient(colours: [UIColor]) -> Void {
let gradient: CAGradientLayer = CAGradientLayer()
gradient.frame = self.bounds
gradient.colors = colours.map { $0.cgColor }
gradient.startPoint = CGPoint(x : 0.0, y : 0.5)
gradient.endPoint = CGPoint(x :1.0, y: 1.5)
self.layer.insertSublayer(gradient, at: 0)
}
并通过调用此函数像这样应用
self.headerView.applyGradient(colours: [UIColor.init(hexString: "54F3FF"),UIColor.init(hexString: "43D7FF") ,UIColor.init(hexString: "30B7FF")])
如何将渐变应用于整个视图和按钮?我的代码有什么错误?
答案 0 :(得分:1)
尝试一下
override func viewDidLayoutSubviews() {
self.headerView.applyGradient(colours: [UIColor.init(hexString: "54F3FF"),UIColor.init(hexString: "43D7FF") ,UIColor.init(hexString: "30B7FF")])
}
希望这会有所帮助
答案 1 :(得分:0)
@Junaid Khan,
尝试如下,
extension UIView {
func applyGradient(colours: [CGColor], startPoint: CGPoint, endPoint: CGPoint, frame: CGRect) -> Void {
let gradientLayer = CAGradientLayer()
gradientLayer.colors = colours
gradientLayer.startPoint = startPoint
gradientLayer.endPoint = endPoint
gradientLayer.frame = frame
layer.insertSublayer(gradientLayer, at: 0)
}
}
如果您使用约束,请像下面在您的约束方法中调用
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
yourView?.applyGradient(colours: [UIColor.red.cgColor, UIColor.yellow.cgColor], startPoint: CGPoint(x: 0, y: 1), endPoint: CGPoint(x: 1, y: 1), frame: (yourView?.bounds)!)
}
希望可以节省您的时间!
注意:您可以使用六色值转换或获取RGB颜色。