gpt4 book ai didi

ios - UITraitCollection iPad如何检测当前方向

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:49:17 24 4
gpt4 key购买 nike

由于 iOS8 检测 UIViewController 方向的方法已被弃用。
例如 -interfaceOrientation 已弃用,要检测当前 View Controller 的方向,我们似乎需要向 View Controller 的 -traitCollection 属性询问此信息。
我有点困惑 iPad 的特征在两个方向上都设置为常规。
检测当前方向的最佳方法是什么?

最佳答案

使用 UIDevice 的 -orientation 属性是不正确的(即使它可以在大多数情况下工作)并且可能导致一些错误,例如 UIDeviceOrientation 也考虑设备的方向,如果它面朝上或朝下,UIInterfaceOrientation 枚举中没有这些值的对。
此外,如果您将应用程序锁定在某个特定方向,UIDevice 会在不考虑该方向的情况下为您提供设备方向。
另一方面,iOS8 弃用了 UIViewController 类的 interfaceOrientation 属性。
有 2 个选项可用于检测界面方向:

  • 使用状态栏方向
  • 使用 size classes,在 iPhone 上,如果它们没有被覆盖,它们可以让你了解当前的界面方向

仍然缺少的是一种理解界面方向变化方向的方法,这在动画中非常重要。
在 WWDC 2014“View controller advancement in iOS8”的 session 中,演讲者提供了一个解决方案对于这个问题,也可以使用替换 -will/DidRotateToInterfaceOrientation 的方法。

此处建议的解决方案已部分实现:

-(void) viewWillTransitionToSize:(CGSize)s withTransitionCoordinator:(UIVCTC)t {
orientation = [self orientationFromTransform: [t targetTransform]];
oldOrientation = [[UIApplication sharedApplication] statusBarOrientation];
[self myWillRotateToInterfaceOrientation:orientation duration: duration];
[t animateAlongsideTransition:^(id <UIVCTCContext>) {
[self myWillAnimateRotationToInterfaceOrientation:orientation
duration:duration];
}
completion: ^(id <UIVCTCContext>) {
[self myDidAnimateFromInterfaceOrientation:oldOrientation];
}];
}

关于ios - UITraitCollection iPad如何检测当前方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28660145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com