Подтвердить что ты не робот

Загрузка нормального изображения с изображением устройства сетчатки (2x)

Когда нам нужно загрузить изображение с некоторого URL-адреса и показать его на двух типах устройств: Retina (с 2x-изображением) и обычное устройство. Должны ли мы иметь два разных URL-адреса изображений для этого?

Для изображений в ресурсном пакете мы сохраняем как xyz.png, так и [email protected] и его работоспособность.

Для изображений, которые мы извлекаем из сервера, нам нужно иметь отдельные URL-адреса изображений для обоих изображений и кэшировать их локально с одним и тем же соглашением об именах (xyz.png и [email protected])?

Пожалуйста, бросьте немного света здесь.

4b9b3361

Ответ 1

Вы можете проверить, имеет ли устройство дисплей сетчатки высокого разрешения и на основе этого загружается другое изображение. Не беспокойтесь о фотографиях и материалах, которые вы бы масштабировали в любом случае для размера интерфейса.
Вы можете создать масштабированную версию загруженного изображения с помощью

UIImage *image = //download...
image=[UIImage imageWithCGImage:[image CGImage] scale:2.0 orientation:UIImageOrientationUp];

Имейте в виду, что масштабированное изображение 100x100 станет 50x50-точечным изображением (со шкалой 2.0).

Сначала проверьте, есть ли у вас сетчатый дисплей

BOOL retina = NO;
if([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
    retina = [[UIScreen mainScreen] scale] == 2.0 ? YES : NO;

Ответ 2

CGFloat screenScale = [UIScreen mainScreen].
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:myUrl] scale:screenScale];