【发布时间】:2018-10-03 10:44:54
【问题描述】:
我的启动屏幕上有一个自定义渐变背景,它在 XCode 的 Interface Builder 中看起来和工作正常,但不会在模拟器中显示。发生了什么事?
import UIKit
@IBDesignable
open class LaunchBkg: UIView {
private lazy var gradientLayer: CAGradientLayer = {
let gradientLayer = CAGradientLayer()
gradientLayer.frame = self.bounds
gradientLayer.colors = [#colorLiteral(red: 0.2588235294, green: 0.8, blue: 0.8352941176, alpha: 1).cgColor, #colorLiteral(red: 0, green: 0.5764705882, blue: 0.9098039216, alpha: 1).cgColor]
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)
layer.insertSublayer(gradientLayer, at: 0)
}
open override func layoutSubviews() {
super.layoutSubviews()
gradientLayer.frame = bounds
}
}
【问题讨论】:
-
您在添加两者时是否检查了边界,我有一种感觉,一旦边界是 0,0,0,0 或类似的东西......
-
您的代码在我的情况下运行良好。删除并重新添加 UIView。
-
您的代码正在运行,请在父视图中检查调用此代码。
-
我刚刚创建了一个测试项目,发现渐变效果很好,除了在我尝试使用它的启动屏幕上。我需要为启动屏幕使用图像吗?
-
@Sean LaunchScreen 不会运行任何代码。为此,您必须在情节提要中使用图像。