iPhone4: предотвратить масштабирование UIImageView - PullRequest
0 голосов
/ 04 ноября 2010

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

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

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

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

* * 1013 EDIT: Вот скриншот:

http://img836.imageshack.us/img836/5173/screenshot20101104at104.png

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

Ответы [ 2 ]

6 голосов
/ 24 ноября 2010

посмотрите на этот код - я использую его в категории UIImage, когда я хочу контролировать, будет ли изображение загружаться с масштабом = 2 или масштабом = 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, если вы загружаете изображения с низким разрешением, - это как лучший контроль, который вы выполняете. взять на себя загрузку изображения высокого разрешения.

лучший, Марин

1 голос
/ 04 ноября 2010

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

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

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

...