Как правильно масштабировать изображения (не ресурсы), чтобы 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 в том же каталоге.