GradientLayer 在 iOS Swift App 中移动到左上角
GradientLayer shifted to the top left in iOS Swift App
我使用以下代码为我的视图添加了一个 GradientLayer 作为背景:
import UIKit
@IBDesignable class MainView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
sharedInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
sharedInit()
}
override func prepareForInterfaceBuilder() {
sharedInit()
}
func sharedInit() {
let colorTop = UIColor.darkGray.cgColor
let colorBottom = UIColor.lightGray.cgColor
let gradientLayer = CAGradientLayer()
gradientLayer.frame = self.frame
gradientLayer.colors = [colorTop, colorBottom]
self.layer.insertSublayer(gradientLayer, at: 0)
}
}
在 Xcode 故事板预览中,一切看起来都符合要求,但在模拟器中,背景移到了左上角,如下面的屏幕截图所示。
如果有人能告诉我这里发生了什么,那就太好了。
谢谢。
您应该转到“MainView”中的“layoutSubviews”方法class:-
override func layoutSubviews() {
super.layoutSubviews()
sharedInit()
}
此外,将“sharedInit”方法的“gradientLayer.frame = self.frame”行替换为以下代码:-
gradientLayer.frame = self.bounds
正如我所检查的,它对我有用!
我使用以下代码为我的视图添加了一个 GradientLayer 作为背景:
import UIKit
@IBDesignable class MainView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
sharedInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
sharedInit()
}
override func prepareForInterfaceBuilder() {
sharedInit()
}
func sharedInit() {
let colorTop = UIColor.darkGray.cgColor
let colorBottom = UIColor.lightGray.cgColor
let gradientLayer = CAGradientLayer()
gradientLayer.frame = self.frame
gradientLayer.colors = [colorTop, colorBottom]
self.layer.insertSublayer(gradientLayer, at: 0)
}
}
在 Xcode 故事板预览中,一切看起来都符合要求,但在模拟器中,背景移到了左上角,如下面的屏幕截图所示。
如果有人能告诉我这里发生了什么,那就太好了。
谢谢。
您应该转到“MainView”中的“layoutSubviews”方法class:-
override func layoutSubviews() {
super.layoutSubviews()
sharedInit()
}
此外,将“sharedInit”方法的“gradientLayer.frame = self.frame”行替换为以下代码:-
gradientLayer.frame = self.bounds
正如我所检查的,它对我有用!