我正在构建一个示例登录页面。一切正常,但是当我在横向模式下在设备上运行项目时,背景颜色仅覆盖屏幕的一半。我搜索了谷歌。我找到了1个匹配的答案,但它没有用。
这是我的背景颜色代码:
let topColor = UIColor(red: 254/255.0, green: 81/255.0, blue: 150/255.0, alpha: 1)
let bottomColor = UIColor(red: 247/255.0, green: 112/255.0, blue: 98/255.0, alpha: 1.0)
let gradientColors: [CGColor] = [topColor.cgColor, bottomColor.cgColor]
let gradientLocations: [Float] = [0.0, 1.0]
let gradientLayer: CAGradientLayer = CAGradientLayer()
gradientLayer.colors = gradientColors
gradientLayer.locations = gradientLocations as [NSNumber]
gradientLayer.frame = self.view.bounds
self.view.layer.insertSublayer(gradientLayer, at: 0)
结果我得到了:
答案 0 :(得分:2)
这是一个常见的错误。当为横向模式布置视图时,gradientLayer的frame
不会更新。你必须手动完成。
<强>解强>
请务必创建gradientLayer
并仅将其作为子图层插入一次(例如,在viewDidLoad
中)。将gradientLayer
保留为viewController
的实例属性,以便您可以访问它。
然后覆盖layoutSubviews
并刷新gradientLayer
的框架:
override func layoutSubviews() {
super.layoutSubviews()
// at this self.view has updated its layout, so now you can update gradientLayer's frame
gradientLayer.frame = self.view.bounds
}