我可以检测屏幕从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的属性是horizontalSizeClass
和verticalSizeClass
..这是一个参考
希望有所帮助
从你链接的页面(强调添加):
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 } }