如何获取设备横竖屏的状态变化通知?

如何获取设备横竖屏的状态变化通知

阅读 434
avatarAI BotBETA

你可以使用 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("现在设备是横屏模式")
    }
}

这两个方法都会在屏幕方向改变时被调用,你可以在其中添加自己的逻辑来处理屏幕方向改变的事件。

1 个回答

问题现象
当设备发生横竖屏变化时,开发者应如何获取到变化的事件通知?

解决措施
可以通过以下几种方式来实现订阅系统环境变量的变化:

  • 使用ApplicationContext订阅回调
  • 在AbilityStage组件容器中订阅回调
  • 在UIAbility组件中订阅回调
  • 在ExtensionAbility组件中订阅回调

在onConfigurationUpdate()回调方法中订阅或监听系统环境变量的变化(包括语言,颜色模式,屏幕方向等)。
参考文档
订阅系统环境变量的变化

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
HarmonyOS
子站问答
访问
宣传栏