Ios UIView渐变作为多次应用的扩展
我有一个扩展来为视图添加渐变Ios UIView渐变作为多次应用的扩展,ios,swift,uikit,Ios,Swift,Uikit,我有一个扩展来为视图添加渐变 func applyLinearGradient(firstColor: UIColor, secondColor: UIColor, startPoint: CGPoint, endpoint: CGPoint, locations: [NSNumber]) { let gradientLayer = CAGradientLayer() gradientLayer.colors = [firstColor.cgColor,
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)
}
问题是,当我在viewdilayoutsubviews
中调用它时,它被应用了2次。
我可以只创建一个从uiview扩展的gradientview,但是否可以只使用一个扩展就可以工作
我正在使用故事板。您如何调用扩展方法?@Sweeper用代码更新了我的问题。每次调用viewDidLayoutSubviews时,您的代码都会添加一个新的渐变。您应该将UIView子类化并创建自己的渐变视图啊,我想避免这种情况。谢谢:)
@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])
}