如何在Swift 4中检测我的设备是否为iPhoneX?

我相信有更好,更合适的方法来做到这一点。但是现在我正在使用UIScreen.main.bounds来检测是否正在处理iPhone

X(812高)。顺便说一句,这个特定的应用程序仅适用于风景。这就是我在此功能中要为幻灯片视图创建幻灯片的地方:

func setupSlideViews(slideView: [SlideView]) {

let screenSize = UIScreen.main.bounds

var frame: CGRect!

if screenSize.width == 812 {

frame = scrollView.frame

} else {

frame = view.frame

}

scrollView.frame = frame

scrollView.contentSize = CGSize(width: frame.width * CGFloat(slideViews.count), height: frame.height)

for (i, slideView) in slideViews.enumerated() {

slideView.frame = CGRect(x: frame.width * CGFloat(i), y: 0, width: frame.width, height: frame.height)

scrollView.addSubview(slideView)

}

}

但是,如何检查模型?

回答:

如果您需要检测设备是否为iPhoneX,请不要使用bounds,这取决于设备的方向。因此,如果用户以纵向模式打开您的应用程序,它将失败。您可以使用设备属性nativeBounds,该属性在旋转时不会改变。

在iOS

8及更高版本中,屏幕的bounds属性考虑了屏幕的界面方向。此行为意味着,纵向设备的边界可能与横向设备的边界不同。依赖屏幕尺寸的应用程序可以将fixedCoordinateSpace属性中的对象用作他们必须进行的任何计算的固定参考点。(在iOS

8之前,屏幕的边界矩形始终反映屏幕相对于纵向向上方向的尺寸。将设备旋转为横向或上下方向不会改变边界。)

extension UIDevice {

var iPhoneX: Bool {

return UIScreen.main.nativeBounds.height == 2436

}

}


用法

if UIDevice.current.iPhoneX { 

print("This device is a iPhoneX")

}

以上是 如何在Swift 4中检测我的设备是否为iPhoneX? 的全部内容, 来源链接: utcz.com/qa/428154.html

回到顶部