渐变视图可在情节提要中使用,但似乎不能在模拟器中使用

时间:2019-05-08 22:31:51

标签: swift cagradientlayer

我在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
}

}

0 个答案:

没有答案