如何知道iOS 8扩展中的当前interfaceOrientation?

时间:2014-08-07 09:53:37

标签: ios ios8 ios-app-extension custom-keyboard

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


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

4 个答案:

答案 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]