use*_*290 6 ios swift iphone-x
我相信有更好,更合适的方法来做到这一点.但是现在我正在使用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)
}
}
Run Code Online (Sandbox Code Playgroud)
但是你如何检查模型?
Leo*_*bus 18
如果您需要检测设备是否是iPhoneX不使用bounds,则取决于设备的方向.因此,如果用户以纵向模式打开您的应用程序,它将失败.您可以使用nativeBounds在旋转时不会更改的设备属性.
在iOS 8及更高版本中,屏幕的边界属性会考虑屏幕的界面方向.此行为意味着纵向设备的边界可能与横向设备的边界不同.依赖于屏幕尺寸的应用程序可以将fixedCoordinateSpace属性中的对象用作它们必须进行的任何计算的固定参考点.(在iOS 8之前,屏幕的边界矩形始终反映相对于纵向方向的屏幕尺寸.将设备旋转到横向或倒置方向不会改变边界.)
extension UIDevice {
var iPhoneX: Bool {
return UIScreen.main.nativeBounds.height == 2436
}
}
Run Code Online (Sandbox Code Playgroud)
用法
if UIDevice.current.iPhoneX {
print("This device is a iPhoneX")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5536 次 |
| 最近记录: |