接口方向在 iOS 8 中已弃用



我没有在我的项目中使用 Size 类,而是继续使用旧方法进行视图控制器定向。我收到弃用警告,例如当我使用以下代码时:

    if (UIInterfaceOrientationIsPortrait(self.interfaceOrientation)) {
      ...
    }

我已经搜索了很多,但找不到正确的解决方法。有什么建议吗?

应该改变

if (UIInterfaceOrientationIsPortrait(self.interfaceOrientation)) {
  ...
}

if (UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation])) {
  ...
}

从 iOS8 开始,Apple 建议使用 TraitCollections(Size Classes)而不是 interfaceOrientation。

此外,由于iOS 9和新的iPad具有"多任务处理"功能,因此在某些情况下,设备方向与窗口比例不符!(这会导致您的应用程序 UI 中断)

但是,有时TraitCollections并不能满足您的所有设计需求。对于这些情况,Apple 建议比较视图的边界:

if view.bounds.size.width > view.bounds.size.height {
    // ...
}

我很惊讶,但您可以在 21'15 查看 WWDC 2015 视频 iOS 9 中的 iPad 多任务处理入门。

你们中的一些人可能需要使用 UIDevice 方向

if (UIDeviceOrientationIsPortrait([[UIDevice currentDevice] orientation])) {
   ...
}

而不是状态栏方向

if (UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation])) {
   ...
}

最新更新