iOS 8引入了可在Storyboard和Xib中使用的新屏幕类型,我可以在代码中检测这些类型吗?如果是,怎么样?
您可以在此处找到有关它的更多信息https://developer.apple.com/library/content/releasenotes/General/WhatsNewIniOS/Articles/iOS8.html
答案 0 :(得分:43)
是的,你可以,UIViewControllers现在有一个traitCollection
属性,其中包含设备习语,当前大小类等信息......此外,你可以实现方法func traitCollectionDidChange(previousTraitCollection: UITraitCollection)
来获取通知size类(或任何特征)已更改(如用户在iphone上旋转设备时)。您正在寻找的UITraitCollection的属性是horizontalSizeClass
和verticalSizeClass
..这是reference
希望有所帮助
答案 1 :(得分:6)
您还可以使用以下扩展程序检测设备类型及其方向:
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
}
}
答案 2 :(得分:3)
从您关联的页面(强调添加):
UITraitCollection
类用于描述分配给对象的特征集合。 Traits指定特定对象的大小类,显示比例和习惯用法。 支持UITraitEnvironment
协议的类(如UIViewController和UIView)拥有特征采集。您可以检索对象的特征集合,并在这些特征发生变化时执行操作。
如从那里链接的引用中所述,您可以在视图或视图控制器中实现traitCollectionDidChange
方法,以找出大小类何时更改。