iPhone4: запретить масштабирование UIImageView

Я загружаю много изображений для показа пользователю.
Каждое из этих изображений имеет размер 512x512.

В iPhone с нормальным разрешением все работает нормально,
но в iPhone4 они кажутся масштабированными.

Если бы эти изображения были получены из ресурсов,
я бы просто добавил @2x к имени изображения, и все заработало бы,
проблема в том, что эти изображения динамически загружаются из Интернета.

Как я могу предотвратить увеличение этого UIImageViews на дисплее сетчатки?

РЕДАКТИРОВАТЬ: Вот скриншот:

Спасибо вам всем.


person Tsimmi    schedule 04.11.2010    source источник
comment
Что вы имеете в виду под расширением? Можете выложить скриншоты?   -  person Paul Ardeleanu    schedule 04.11.2010
comment
Вы имеете в виду, что изображения отображаются в разрешении 256x256 на вашем iphone4?   -  person Bongeh    schedule 04.11.2010
comment
Их истинное разрешение - 512x512, но в iPhone4 они отображаются в двойном размере, потому что каждая точка на экране Retina - это два пикселя. Как я могу предотвратить это?   -  person Tsimmi    schedule 04.11.2010


Ответы (2)


посмотрите на этот код - я использую его в категории UIImage, когда хочу контролировать, будет ли изображение загружаться с помощью scale = 2 или scale = 1 ... Посмотрите, где NSData извлекает содержимое файла (в моем коде) и заменяет с вашим кодом, который извлекает изображения из Интернета:

if ( [[[UIDevice currentDevice] systemVersion] intValue] >= 4 && [[UIScreen mainScreen] scale] == 2.0 ) {
    if ( [[NSFileManager defaultManager] fileExistsAtPath:path] ) {
        return [self initWithCGImage:[[UIImage imageWithData:[NSData dataWithContentsOfFile:path]] CGImage] scale:2.0 orientation:UIImageOrientationUp];
    }
} else [ load here the image via imageWithContentsOfFile or whatever ]

Таким образом, хитрость заключается в параметре «scale» в параметре «initWithCGImage» класса UIImage, передавайте 2.0, если вы загружаете изображения с высоким разрешением, или передавайте 1.0, если вы загружаете изображения с низким разрешением - это похоже на самый большой контроль, который вы берете на себя загрузка изображений в высоком разрешении.

лучше, Марин

person Marin Todorov    schedule 24.11.2010

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

    if ( [[[UIDevice currentDevice] systemVersion] intValue] >= 4 && [[UIScreen mainScreen] scale] == 2.0 ) {
  //do the scaling of image(s)
}

Дай мне знать, поможет ли это.

person Ladislav    schedule 04.11.2010