运行仅限iPhone应用程序的iPad对应于哪部iPhone



每隔一段时间,我的iPhone应用程序似乎就会崩溃,因为在iPad上运行它的用户。

最近,我在globalinit上发现了一份崩溃报告,指出了这种枚举类型的初始化,该枚举类型被大量用于设计和大小。

static var iPhone = IPhone(height: UIScreen.main.bounds.height)!

似乎iPad设备不会匹配这些高度中的任何一个,因此nil使应用程序崩溃(这是带有iOS 11的iPad Air(。在模拟器上,所有iPad设备在运行仅限iPhone的应用程序时似乎都对应于现有的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格式显示。哪种是处理此问题的最佳方法,以便运行此应用程序的任何iPad都将对应于我现有的设计之一?

下面的参考资料告诉我们,在iOS 12之后,所有仅限iPhone的应用程序都将在具有iPhone 6分辨率的iPad上运行。将您的默认值更改为self = .normal,我认为您会很高兴。

https://ioshacker.com/ipad/ios-12-improves-experience-of-using-iphone-apps-on-ipad

最新更新