如何获取设备横竖屏的状态变化通知
你可以使用 iOS 的 UIViewController 生命周期方法来实现这一目标。以下是一种方法:
在你的 UIViewController 子类中,重写以下两个方法:
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
// 在这里你可以获取到设备屏幕的方向变化通知
if size.width < size.height {
print("现在设备是竖屏模式")
} else {
print("现在设备是横屏模式")
}
}
另一个方法是:
override func traitCollectionDidChange(from previous: UITraitCollection?) {
super.traitCollectionDidChange(from: previous)
// 在这里你可以获取到设备屏幕的 trait 变化通知
if self.traitCollection.verticalSizeClass == .compact {
print("现在设备是竖屏模式")
} else {
print("现在设备是横屏模式")
}
}
这两个方法都会在屏幕方向改变时被调用,你可以在其中添加自己的逻辑来处理屏幕方向改变的事件。
问题现象
当设备发生横竖屏变化时,开发者应如何获取到变化的事件通知?
解决措施
可以通过以下几种方式来实现订阅系统环境变量的变化:
在onConfigurationUpdate()回调方法中订阅或监听系统环境变量的变化(包括语言,颜色模式,屏幕方向等)。
参考文档
订阅系统环境变量的变化