【问题标题】:iOS custom gradient background UIView won't display in simulator [duplicate]iOS自定义渐变背景UIView不会在模拟器中显示[重复]
【发布时间】: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 不会运行任何代码。为此,您必须在情节提要中使用图像。

标签: ios swift uiview gradient


【解决方案1】:

我是否需要为启动屏幕使用图像

是的。

启动屏幕只是您的应用启动时出现的图像。根据定义,您的应用尚未启动;这就是为什么我们需要一个启动屏幕来覆盖代码运行之前的时间间隔。因此,根据定义,您的代码还没有开始运行。您不能通过代码影响启动屏幕。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-15
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多