ios - 按屏幕高度获取 iPhone 型号 XS Max
问题描述
我正在尝试为 XS Max 定制设计。以前我只是通过检查 main.bound.screen.height 来识别设备,对于 XS Max,根据这个网站:https ://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions ,应该返回 896.0,对吗?
不过,Xcode 10.0 XS Max 模拟器返回 812.0 作为屏幕高度(XR 也是如此,它应该具有相同的屏幕点)。知道如何解决这个问题吗?
enum IPhone: String {
case SE, normal, plus, X, XSMax
init?(height: CGFloat) {
switch height {
case 568: self = .SE
case 667: self = .normal
case 736: self = .plus
case 812: self = .X
case 896: self = .XSMax
default:
return nil
}
}
}
struct Design {
static var iPhone = IPhone(height: UIScreen.main.bounds.height)!
}
在视图控制器的 viewDidLoad() 中:
print("screen height: \(UIScreen.main.bounds.height), iPhone: \(Design.iPhone.rawValue)")
解决方案
好的,经过一番搜索,我在这里找到了我的问题的答案:UIScreen MainScreen Bounds return wrong size
事实证明,Xcode 会通过浏览您提供的启动图像来猜测屏幕的大小。你相信吗?因此,如果您没有为新 XS Max 提供适当尺寸的图像,它将回退到它找到的最大启动图像。这就是为什么在没有启动图像的新项目中它运行良好的原因。
我已经为 XS Max 和 XR 提供了启动图像,现在屏幕尺寸是正确的。
推荐阅读
- javascript - 从数组中删除一个元素(待办事项列表应用程序)
- python - 如何使用 Python 存储 JSON 字典的键?
- javascript - 在 JS 中标准化时间的最佳方法
- python - Python Is_Prime 方法问题。我需要一个 for 循环,所以它可以在没有 print 的情况下打印它
- flutter - 未来
与无效 - php - 如何在 laravel 控制器上使用 if else 并显示警报
- django - /addimam 'int' 对象的 AttributeError 没有属性 '_meta' Django
- c++ - `virtual` `override` 析构函数
- javascript - 如何检测 HTTP 请求是否被浏览器扩展阻止?
- django - 处理超出 numpy 范围的浮点值