Как правильно масштабировать изображения (не ресурсы), чтобы iPhone Retina правильно отображал вид?

У меня есть UIImage, либо с камеры устройства, либо загруженный с URL. Скажи разрешение 800х600.

Я хочу отобразить масштабированное изображение в UIImageView размером 200x150, и у меня есть правильный код масштабирования изображения.

Итак, я просто масштабирую UIImage до UIImageView frame.size (снова 200х150). На дисплее без сетчатки он выглядит нормально, но на экране с сетчаткой он выглядит плохо, как будто уменьшенное изображение было увеличено, потому что фактический кадр в пикселях 400x300.

Вопрос в том, должен ли я умножить вручную frame.size.width/height на 2, когда это дисплей сетчатки, когда я изменяю размер, так что он будет изменен до 400x300, или есть встроенная функция для этого?

Поскольку UIImage не является ресурсом на устройстве, у меня нет @2x вариант.

2 ответа

Решение

Во всех случаях сохраняйте размер кадра при просмотре изображения 200х150. В случае отсутствия дисплея сетчатки масштабируйте изображение до 200x150. На устройствах отображения сетчатки масштабировать его до 400x300. Установить contentMode из UIImageView в UIViewContentModeScaleAspectFit,

Когда вы получаете изображение, скажем, 800x600, вы не можете создать UIImage, масштабированный до 400x300, и временно сохранить его с расширением @2x, возможно, в папку "Документы" или tmp, а затем сохранить другой UIImage, масштабированный до 200x150, и сохранить это без @2x в том же каталоге.

Другие вопросы по тегам