Время от времени мое приложение только для iPhone, похоже, дает сбой пользователям, использующим его на iPad.
Недавно я нашел сообщение о сбое в globalinit, указывающее на инициализацию этого типа enum, который интенсивно используется для проектирования и размеров.
static var iPhone = IPhone(height: UIScreen.main.bounds.height)!
Кажется, что устройство iPad не будет соответствовать ни одной из этих высот, так что nil вылетит из приложения (это iPad Air с iOS 11).
В симуляторе все устройства 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
}
}
}
Конечно, я никогда не хотел бы возвращать ноль и вместо этого включать возможные размеры экрана iPad, что вызывает вопрос: какой iPhone «имитирует» iPad при запуске моего приложения?
Я недавно читал, что начиная с iOS 12, iPad будет отображать приложения iPhone уже не в формате 3/4, а в 16/9.
Каков наилучший способ справиться с этим, чтобы любой iPad с этим приложением соответствовал одному из моих существующих дизайнов?