我可以通过iOS 8上的代码检测屏幕是常规的还是紧凑的?

Tom*_*art 30 ios ios8

iOS 8引入了可在Storyboard和Xib中使用的新屏幕类型,我可以在代码中检测这些类型吗?如果有,怎么样?

在这里您可以找到更多相关信息https://developer.apple.com/library/content/releasenotes/General/WhatsNewIniOS/Articles/iOS8.html

Dan*_*iel 45

是的,你可以,UIViewControllers现在有一个 traitCollection属性,其中包含从设备习惯用法到当前大小类等的信息......此外,您可以实现该方法 func traitCollectionDidChange(previousTraitCollection: UITraitCollection),以便在大小类(或任何特征)发生变化时获取通知(如同用户在iphone上旋转设备.UITraitCollection,您正在寻找的属性horizontalSizeClassverticalSizeClass..Here是一个参考

希望有所帮助

  • `UIScreen`也符合协议`UITraitEnvironment`,因此有一个`traitCollection`属性 (7认同)

Bar*_*zyk 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
    }
}
Run Code Online (Sandbox Code Playgroud)