ios - UIView 渐变作为多次应用的扩展
问题描述
我有一个扩展来为视图添加渐变。
func applyLinearGradient(firstColor: UIColor, secondColor: UIColor, startPoint: CGPoint, endpoint: CGPoint, locations: [NSNumber]) {
let gradientLayer = CAGradientLayer()
gradientLayer.colors = [firstColor.cgColor, secondColor.cgColor]
gradientLayer.startPoint = startPoint
gradientLayer.endPoint = endpoint
gradientLayer.locations = locations
gradientLayer.frame = bounds
layer.insertSublayer(gradientLayer, at: 0)
}
@IBOutlet weak var titleView: UIView!
@IBOutlet weak var titleTxt: UILabel!
...
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
//add gradient under the title
titleView.applyLinearGradient(firstColor: UIColor(named: "PrimaryColor") ?? UIColor.clear, secondColor: UIColor.clear, startPoint: CGPoint(x: 0.5, y: 1.0), endpoint: CGPoint(x: 0.5, y: 0.0), locations: [0, 1])
}
问题是当我调用它时,viewDidLayoutSubviews
它被应用了 2 次。
我可以创建一个从 uiview 扩展的渐变视图,但是是否可以仅使用扩展来使其工作?
我正在使用故事板。
解决方案
推荐阅读
- go - 在以下任何一个中都找不到包“golang.org/x/net/context”:
- r - 重命名数据框中多个特定因素的级别
- unity3d - 获取变换运动的局部位置
- x11 - 是否有标准的非窗口退出事件?
- multithreading - 由于“由于表上的排序顺序而抑制了并行 WHERE 评估”和压缩类型,导致性能下降
- arrays - 按名称获取数组的总和
- node.js - 使用云功能更新 Firestore 文档
- webpack - VS Code:无法在 VS 代码中使用 Webpack 和 Jsconfig 解析模块的路径
- bash - git log --oneline 提供管道或重定向到文件时丢失的 HEAD 信息
- javascript - PHP:使用 $_GET 从 javascript 中检索值