【发布时间】:2019-04-25 19:07:20
【问题描述】:
我有如下代码:
playView.layer.cornerRadius = 16
let gradient1 = CAGradientLayer()
gradient1.frame = playView.frame
gradient1.cornerRadius = 16
if #available(iOS 10.0, *) {
// set P3 colour
} else {
// set sRGB colour
}
gradient1.startPoint = CGPoint(x: 0, y: 0)
gradient1.endPoint = CGPoint(x: 1, y: 1)
playView.layer.insertSublayer(gradient1, at: 0)
在上面代码块的第 3 行,我将渐变的框架设置为我希望它填充的框架。
当我在不同的设备上运行应用程序时,如果正在运行应用程序的设备是在 Interface Builder 中选择的设备,则渐变层只会填充正确的区域。
我目前有viewDidLoad()中的代码,所以可以通过将代码移到viewDidAppear()来解决问题,但是当应用程序加载时,渐变出现之前会有一点延迟,没有给出流畅的外观和感觉。
是否有另一种方法可以将代码放入其中,以便渐变显示在正确的位置,同时在用户看到屏幕时立即出现?或者,一种使渐变填充视图的方法,同时仍将代码保留在 viewDidLoad() 中?
编辑:viewWillAppear() 不起作用,viewWillLayoutSubviews() 也不起作用。肯定有办法解决这个问题吗?
【问题讨论】:
标签: ios swift xcode cagradientlayer