每隔一段时间,我的仅iPhone应用程序似乎在iPad上运行的用户崩溃。
最近,我在globalinit上发现了一个崩溃报告,该报告指出了该枚举类型的初始化,该枚举类型在设计和大小上大量使用。
static var iPhone = IPhone(height: UIScreen.main.bounds.height)!
似乎iPad设备无法满足任何这些高度要求,因此nil会使应用崩溃(这是具有iOS 11的iPad Air)。 在模拟器上,运行仅iPhone的应用程序时,所有iPad设备似乎都与现有的iPhone尺寸相对应。
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
}
}
}
当然,我永远不想返回nil,而是合并可能的iPad屏幕尺寸,这引出了一个问题:运行我的应用程序时,iPad会“模拟”哪个iPhone? 我最近读到,从iOS 12开始,iPad将不再以3/4格式显示iPhone应用程序,而是以16/9格式显示iPhone应用程序。 最好的处理方法是什么,以便任何运行此应用程序的iPad都能与我现有的设计之一相对应?
答案 0 :(得分:0)
以下参考资料表明,在iOS 12之后,所有仅iPhone的应用程序将在iPhone 6分辨率的iPad上运行。将您的默认设置更改为self = .normal
,我认为您会很方便。
https://ioshacker.com/ipad/ios-12-improves-experience-of-using-iphone-apps-on-ipad