7

UIViewController 的 InterfaceOrientation 已弃用,文档建议使用[[UIApplication sharedApplication] statusBarOrientation],但 iOS 8 的扩展中没有 sharedApplication 。


正如@Retro 提到的,在大多数情况下,您可以使用self.traitCollection.verticalSizeClassself.traitCollection.horizontalSizeClass在 UIViewController 中获取方向信息。

4

4 回答 4

11

UITraitCollection对象提供有关 UIViewController 对象特征的详细信息,该对象管理构成应用程序界面一部分的一组视图这些特性或特征定义了视图控制器的大小类、显示比例和设备惯用语。创建视图控制器时,会自动为该视图控制器创建特征集合。

您可以创建和修改视图控制器的特征集合来自定义您的应用程序。以下方法创建一个仅包含传递参数的新特征集合:

traitCollectionWithDisplayScale:

traitCollectionWithUserInterfaceIdiom:

traitCollectionWithHorizontalSizeClass:

traitCollectionWithVerticalSizeClass:
于 2014-08-07T10:10:45.610 回答
3

未弃用,适用于任何设备屏幕尺寸(包括 Apple 将在今年发布的未来屏幕尺寸)。

-(void)viewDidLayoutSubviews {
    NSLog(@"%@", self.view.frame.size.width == fminf([[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height) ? @"Portrait" : @"Landscape");
}

感谢 @anneblue 帮助缩短代码!

于 2014-08-09T19:39:22.927 回答
-1

您可以将屏幕边界转换为键盘视图的坐标系。之后,您可以检查更大的宽度或高度。

于 2014-10-20T11:37:38.203 回答
-3

简单 - 只需使用:

[[UIApplication sharedApplication] statusBarOrientation]

于 2015-05-06T17:18:52.720 回答