我可以检测屏幕从iOS 8上的代码是正常的还是紧凑的?

iOS 8引入了故事板和Xib中可用的新屏幕types,我可以在代码中检测这些types吗? 如果是的话,怎么样?

在这里你可以find更多关于它https://developer.apple.com/library/content/releasenotes/General/WhatsNewIniOS/Articles/iOS8.html

是的,你可以,UIViewControllers现在有一个traitCollection属性,它具有从设备成语,到当前大小类和更多的信息.​​..此外,您可以实现方法func traitCollectionDidChange(previousTraitCollection: UITraitCollection)任何特质)已经改变(当用户在iphone上旋转设备时)。 你正在寻找的UITraitCollection的属性是horizontalSizeClassverticalSizeClass ..这是一个参考

希望有所帮助

从你链接的页面(强调添加):

UITraitCollection类用于描述分配给对象的特征的集合。 特征指定特定对象的尺寸等级,显示比例和成语。 支持UITraitEnvironment协议的类(如UIViewController和UIView)拥有一个特征集合。 您可以检索对象的特征集合,并在特征更改时执行操作。

正如在那里引用的引用中指出的那样,您可以在视图或视图控制器中实现traitCollectionDidChange方法,以确定大小类更改的时间。

您还可以使用以下扩展名来检测设备种类和方向:

 extension UITraitCollection { var isIpad: Bool { return horizontalSizeClass == .regular && verticalSizeClass == .regular } var isIphoneLandscape: Bool { return verticalSizeClass == .compact } var isIphonePortrait: Bool { return horizontalSizeClass == .compact && verticalSizeClass == .regular } var isIphone: Bool { return isIphoneLandscape || isIphonePortrait } }