#ios #swift #image #scale #assets
#iOS #swift #изображение #масштабирование #ресурсы
Вопрос:
У меня возникли проблемы при попытке заставить ресурсы правильно масштабироваться между iPhone X / XS и iPhone XS Max (также iPhone 8 против 8 Plus). Я бы хотел, чтобы ресурс пропорционально масштабировался для разных размеров экрана.
Насколько я понимаю, как X / XS, так и XS Max используют 3x
ресурсы, но отличаются разрешением дисплея: 375pt
для X / XS и 414pt
для XS Max. Я разработал ресурс на эскизе с 375pt
шириной для правильного масштабирования 3x
на iPhone X / XS. Ресурс отображается правильно на X / XS, но остается того же размера на XS Max вместо увеличения, чтобы выглядеть пропорционально на большом дисплее.
Я также пытался изменить размер ресурса по 414pt
ширине, но это приводит к противоположному результату: выглядит правильно на XS Max, но слишком велико на X / XS вместо уменьшения масштаба, чтобы выглядеть пропорционально.
Это то, чего я ожидаю от обоих размеров экрана:
активы масштабируются правильно: но это то, что я вижу на XS Max (Plus):
Игнорируя высоту изображения, посмотрите, как ресурс XS Max остается того же размера, а не увеличивается пропорционально?
Похоже, я могу заставить ресурсы правильно масштабироваться на XS Max с помощью кода, просматривая каждый ресурс и масштабируя их вручную, но я предполагаю, что это должно быть автоматически, и я делаю что-то не так.
Комментарии:
1. Во-первых, повторно разместите свои изображения с контрастными цветами … черный на темно-сером очень трудно увидеть. Во-вторых, неясно, что вы на самом деле делаете. У вас есть путь Безье? A .png?
2. Это ресурс в формате .png
@3x
, приведенный выше пример представляет собой изображение разрыва строки между двумя разделами, но это тот же случай для всех других ресурсов. Я нашел альтернативное решение, в котором я могу просто загрузить другой@3x
ресурс только для устройств Plus / Max, и это, похоже, работает. Было интересно, почему он не будет просто автоматически увеличивать / уменьшать масштаб.3. Что находится
Content Mode
на вашем изображении? Установлено ли оно наScale to Fill
?4. Нет, он не настроен на
Scale to Fill
. Я полагал, что, поскольку и X / XS, и Max требуют@3x
ресурсов, изображения будут масштабироваться, но они останутся прежними. Мне пришлось бы либо установитьContent Mode
Scale to Fill
значение, которое на самом деле не рекомендуется (уменьшить ресурсы res на Max), либо просто загрузить второй набор ресурсов с измененным размером для Max, который я выбрал.5. Если ваш вид изображения не настроен на масштабирование изображения, вы не можете ожидать, что он, ну … масштабирует изображение. Для такого простого изображения с волнистой линией масштабирование должно работать просто отлично.
Ответ №1:
Вероятно, это не лучшее решение, но я решил загрузить второй набор @3x
ресурсов с измененным размером, чтобы устройства Plus / Max выглядели правильно масштабированными на всех экранах устройств. Это имеет дополнительное преимущество — не увеличивать масштаб, чтобы все активы выглядели четко, и немного эффективнее, чем перебирать все активы и масштабировать их по размеру. Однако это означало, что мне пришлось реэкспортировать затронутые активы, предназначенные для 414pt
экранов.