Я думаю, что проверка каждой iPhone модели на самом деле не масштабируема и также кажется излишней.
1) По моему мнению, вы можете сделать начать с базовой iPhone нужной модели для поддержки , скажем, iPhone SE, чтобы ваш дизайн хорошо вписывался в iPhone SE и , а затем во время выполнения масштабируйте до текущего размера экрана устройства .
Вы получите scale ratio
, например 1.2, 1.8..et c, которое вы можете применить (во время выполнения) к таким ограничениям, как font sizes
может быть:
var scaleRatio: CGFloat = {
let iPhoneSEWidth: CGFloat = 320
let currentDeviceWidth = UIScreen.main.bounds.size.width
return currentDeviceWidth/iPhoneSEWidth
}()
И может применить это как:
label.font = font.size(12 * scaleRatio)
, где 12 - размер шрифта, который хорошо вписывается в iPhone SE (ваша база), а затем во время выполнения он масштабируется до текущего соотношения между вашим базовым размером экрана и текущий iPhone размер экрана.
2) Еще одна вещь, которую вы могли бы сделать в UI Design, это, вероятно, вместо определения определенного ограничения c, такого как width
или height
или другого anchor
' константы s должны определять якорные ограничения представления как пропорционально якорным ограничениям других представлений ; например, вы можете захотеть, чтобы ширина представления всегда была вдвое меньше или примерно равна половине ширины контейнера, вы можете использовать multiplier
:
childView.widthAnchor.constraint(equalTo: containerView.widthAnchor, multiplier: 0.5).isActive = true
Все зависит от того, какая стратегия лучше подходит для какого типа constraints
вы хотите увеличить масштаб и то, как вы хотите увеличить их, но я думаю, что, следуя этим двум способам мышления, вы сможете получить хороший интерфейс, масштабированный на разных iPhone экранах.