abh*_*ran 7 animation uiview ios cagradientlayer swift
我正在使用 UIView 扩展将渐变层应用于 UIView。我需要在滚动 tableview 时在运行时更改渐变颜色。我使用滚动视图 contentoffset 值来更新渐变颜色。
我尝试过的: 我尝试从超级图层中删除图层并创建一个具有新颜色的新渐变图层。但是应用程序出现内存问题,用户界面有时会冻结。
是否可以在运行时更新 CAGradientLayer 渐变颜色?
extension UIView {
func applyGradient(withColours colours: [UIColor], gradientOrientation orientation: GradientOrientation) {
let gradient: CAGradientLayer = CAGradientLayer()
gradient.frame = self.bounds
gradient.colors = colours.map { $0.cgColor }
gradient.startPoint = orientation.startPoint
gradient.endPoint = orientation.endPoint
self.layer.insertSublayer(gradient, at: 0)
}
}
Run Code Online (Sandbox Code Playgroud)
这个问题的答案是在同一范围内更改渐变图层的颜色属性。我之前尝试过这样做,但范围不同。现在它正在工作。答案如下。
Swift 3.1 代码:
let gradient = CAGradientLayer()
gradient.frame = view.bounds
gradient.colors = [UIColor.white.cgColor, UIColor.black.cgColor]
gradient.startPoint = CGPoint(x: 0, y: 0)
gradient.endPoint = CGPoint(x: 1, y: 1)
view.layer.insertSublayer(gradient, at: 0)
DispatchQueue.main.asyncAfter(deadline: .now() + 10) {
// this will be called after 10 seconds.
gradient.colors = [UIColor.red.cgColor, UIColor.black.cgColor]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3846 次 |
| 最近记录: |