#ios #xcode #interface-builder #xcasset
#iOS #xcode #конструктор интерфейса #xcasset
Вопрос:
Вот пример проекта
Проблема
Я хочу создать изображение с фиксированной верхней половинной частью и растянутой нижней половинной частью, чтобы оно имело правильный размер на любой высоте.
И для достижения этого я использую фрагмент изображения в Assets.xcassets. Изображение может быть изменено должным образом, однако в разных размерах оно отображается немного по-разному.
Исходное изображение
Фрагмент изображения
Просто нарежьте изображение от вертикального центра.
Раскадровка
Режим содержимого настроен на масштабирование для заполнения
Ограничение по высоте равно ограничению по ширине, умноженному на 0,8
Результат
Я думаю, что он должен отображать почти одинаковые изображения на разных устройствах. Потому что все одинаково, за исключением ресурсов изображения (2x, 3x).
Однако результат не такой, как я ожидал. Изображение кажется немного сжатым на iPhone 8 PLUS.
Наконец-то
Я использую Mojave с Xcode 10.1 (10B61).
Кто-нибудь знает, в чем причина. И как правильно растянуть изображение по вертикали?
Ответ №1:
Причина, по которой он выглядит «сжатым», заключается в том, что изображение растягивается горизонтально.
Ваш фрагмент позволяет сохранять постоянную высоту верхней части, но не постоянную (или пропорциональную) ширину.
Здесь я использую ваше исходное изображение без каких-либо фрагментов… каждый вид изображения имеет одинаковую высоту (201 пункт), поэтому вы знаете, что оно масштабируется не по вертикали, а по разной ширине, поэтому вы можете видеть результат горизонтального растяжения:
Возможно, вы захотите попробовать обрезать исходное изображение только до верхней части. Настройте ограничения для этого вида изображения, чтобы они оставались пропорциональными, а затем используйте однотонный вид изображения (или просто UIView с соответствующим цветом фона) в качестве нижнего раздела «вертикальное растягивание».