不推荐使用UIViewController的InterfaceOrientation,文档建议使用[[UIApplication sharedApplication] statusBarOrientation]
,但iOS 8的扩展中没有sharedApplication。
正如@Retro所提到的,在大多数情况下,您可以在UIViewController中使用self.traitCollection.verticalSizeClass
或self.traitCollection.horizontalSizeClass
来获取方向信息。
答案 0 :(得分:11)
UITraitCollection对象提供有关UIViewController对象特征的详细信息,该对象管理构成应用程序界面一部分的一组视图。这些特征或特征定义视图控制器的大小类,显示比例和设备惯用语。创建视图控制器时,会自动为该视图控制器创建特征集合。
您可以创建和修改视图控制器的特征集以自定义您的应用。以下方法创建一个仅包含传递参数的新特征集合:
traitCollectionWithDisplayScale:
traitCollectionWithUserInterfaceIdiom:
traitCollectionWithHorizontalSizeClass:
traitCollectionWithVerticalSizeClass:
答案 1 :(得分:3)
不推荐使用并且适用于任何设备屏幕尺寸(包括未来的屏幕尺寸Apple将于今年发布)。
-(void)viewDidLayoutSubviews {
NSLog(@"%@", self.view.frame.size.width == fminf([[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height) ? @"Portrait" : @"Landscape");
}
感谢@anneblue帮助缩短代码!
答案 2 :(得分:-1)
您可以将屏幕边界转换为键盘视图的坐标系。之后,您可以检查更大的宽度或高度。
答案 3 :(得分:-3)
简单 - 只需使用:
[[UIApplication sharedApplication] statusBarOrientation]