iOS использует points
для расчета размера изображения и размера шрифта. На экране без сетчатки 1 точка равна 1 пикселю, на сетчатых экранах - 2 пикселя, а для iPhone 6 Plus она равна 3 пикселям (хотя применяется некоторое масштабирование). Если вы хотите, чтобы масштабировать изображение и шрифт, основанный на фактическом пикселей размер экрана, вы можете получить число пикселя в точке, как это:
CGFloat screenScale = [[UIScreen mainScreen] scale];
iPhone 5, 6 и 6 Plus формат экрана отношения одинаковы, а разрешения различаются. Если вы хотите просто сохранить пропорции, вам нужно выбрать ширину или высоту «базового» экрана (скажем, ширину экрана iPhone 5, что составляет 320,0 балла), а затем рассчитать пропорцию, разделив фактическую ширину экрана устройства (скажем, ширина экрана iPhone 6 Plus, что составляет 414,0 балла) по этой «базовой» ширине (414,0/320,0 = 1,29375). Вы можете получить размер экрана, как это:
CGRect screenBounds = [[UIScreen mainScreen] bounds];
Разделив ширину screenBounds
«s по ширине основания дает пропорцию. Затем вы просто умножаете все размеры и поля с той пропорцией (1.29375 в нашем случае для iPhone 6 Plus). Надеюсь, вы получите эту идею.
P.S. Хорошим руководством к разрешениям является here.
P.P.S. И в вашем случае, как сказал skorolkov ниже, приложение просто расширяет все для больших экранов (добавьте/удалите всплывающие экраны, чтобы включить/отключить это масштабирование).
UPD: Хорошо, теперь я вижу, что вас смущает.Вот что: когда Apple изначально выпустила iPhone 6 и 6 Plus, многие приложения не поддерживали их большие экраны и большие разрешения. Поэтому они решили, что если в приложении отсутствуют экраны заставки , конкретно, сделанные для этих телефонов, он должен использовать разрешение iPhone 5.
Вот почему вы получаете точные снимки после ручного изменения размера скриншотов: система тоже делает это. Он просто берет iPhone 5 'picture' и растягивает его так, что он подходит для больших экранов. Недостаток ясен (и заметен, особенно на iPhone 6 Plus): шрифты и изображения размыты и масштабируются (элементы системного интерфейса, такие как строка состояния, также получают масштабирование). Таким образом, в основном вы получаете изображение iPhone iPhone 5 на всех устройствах с большим экраном (вы можете проверить это, сделав снимок экрана на iPhone 5, изменив его размер вручную, чтобы он соответствовал разрешению iPhone 6/6 Plus и сравнил фактический iPhone 6/6 Plus скриншот к нему).
Чтобы быть ясным: это поведение, которое вы сейчас получаете, но это не хорошо. Чтобы все было правильно масштабировано с использованием собственного разрешения устройства, используйте описанный выше метод (ручное умножение) или автозапуск с /width
, установленным в соответствии с желаемыми коэффициентами для элементов интерфейса.
Вы создали трехмерную версию вашего изображения? – CSmith
Нет У меня только версия @ 1x. Как и в приложении погоды: https://github.com/JakeLin/SwiftWeather –
Пожалуйста, разместите код, который вы используете, или перечислите ограничения, которые у вас есть. – Sulthan