我在Xcode-Project中有一个功能齐全的Gradient View,并将其作为一个View Controller的类添加。在情节提要中,我可以更改颜色,并且渐变视图以不同的图层显示。一旦启动模拟器,它就不会显示,而背景色仍会显示。虽然我的渐变视图会覆盖背景颜色,但是模拟器中不会发生这种情况。 有人有解决这个问题的简单方法吗?
我尝试了不同的视图,但所有视图都显示了情节提要中的原始背景颜色,而不是我的渐变视图中的背景颜色
这是我的情节提要的图像: Image of my Storyboard
这是我的“渐变视图”的代码:
import UIKit
@IBDesignable
GradientView类:UIView {
@IBInspectable
var startColor: UIColor = UIColor.white {
didSet {
gradientLayer.colors = [startColor.cgColor,endColor.cgColor]
setNeedsDisplay()
}
}
@IBInspectable
var endColor: UIColor = UIColor.white {
didSet {
gradientLayer.colors = [startColor.cgColor,endColor.cgColor]
setNeedsDisplay()
}
}
@IBInspectable
var startPoint: CGPoint = CGPoint.zero {
didSet {
gradientLayer.startPoint = startPoint
setNeedsDisplay()
}
}
@IBInspectable
var endPoint: CGPoint = CGPoint.zero {
didSet {
gradientLayer.endPoint = endPoint
setNeedsDisplay()
}
}
//lazy bedeutet, die Variable wird erst initialisiert, wenn wir sie benutzen
private lazy var gradientLayer: CAGradientLayer = {
let gradientLayer = CAGradientLayer()
gradientLayer.colors = [self.startColor.cgColor,self.endColor.cgColor]
gradientLayer.frame = self.bounds
return gradientLayer
}()
override init(frame: CGRect) {
super.init(frame: frame)
layer.insertSublayer(gradientLayer, at: 0)
}
public required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func layoutSubviews() {
gradientLayer.frame = bounds
}
}