我正在尝试自定义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)")
答案 0 :(得分:1)
好吧,经过一番搜索,我在这里找到了问题的答案:UIScreen MainScreen Bounds returning wrong size
结果是,Xcode将通过浏览您提供的启动图像来猜测屏幕的大小。你相信吗?因此,如果您没有为新的XS Max提供合适尺寸的图像,它将退回到它找到的最大启动图像。这就是为什么在没有启动映像的新项目中它可以正常工作的原因。
我已经提供了XS Max和XR的启动图像,现在屏幕尺寸正确了。