【发布时间】:2019-09-26 16:29:42
【问题描述】:
如何使用 Swift 3 检测方向变化?
我需要在更改后检测它以计算帧大小。
编辑
我问这个问题是因为我需要像这个问题一样重绘关于方向变化的视图:Can't get background gradient to fill entire screen upon rotation
我不知道如何实现标记为正确答案的答案。
我尝试了另一个答案
self.backgroundImageView.layer.sublayers?.first?.frame = self.view.bounds
但它不起作用。
在viewDidLoad()我有
let color1 = UIColor(red: 225.0/255.0, green: 210.0/255.0, blue: 0.0/255.0, alpha: 1.0).cgColor
let color2 = UIColor(red: 255.0/255.0, green: 125.0/255.0, blue: 77.0/255.0, alpha: 1.0).cgColor
let gradientLayer = CAGradientLayer()
gradientLayer.colors = [color1, color2]
gradientLayer.locations = [ 0.0, 1.0]
gradientLayer.frame = self.view.bounds
self.view.layer.insertSublayer(gradientLayer, at: 0)
【问题讨论】:
-
A. 你可以确保创建正确的视图层次结构并尽量不要破坏iOS自动支持的通知链;或B。您可以订阅
UIDeviceOrientationDidChangeNotification并听取方向变化并在必要时更新您的自定义视图。