运行仅iPhone应用程序的iPad与哪个iPhone对应?

时间:2019-05-31 10:21:54

标签: swift iphone xcode ipad

每隔一段时间,我的仅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都能与我现有的设计之一相对应?

1 个答案:

答案 0 :(得分:0)

以下参考资料表明,在iOS 12之后,所有仅iPhone的应用程序将在iPhone 6分辨率的iPad上运行。将您的默认设置更改为self = .normal,我认为您会很方便。

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