Если вы хотите поддерживать исходное разрешение iPhone 6/Plus, вам необходимо добавить изображения запуска (до iOS 8) или xib экрана запуска (iOS 8).
iPhone 4/4S: 640 x 960
iPhone 5/5S: 640 x 1136
iPhone 6: 750 x 1334
iPhone 6 Plus: 1242 x 2208
Это означает, что вам нужно подготовить 4 образа запуска с указанным выше разрешением, если вы хотите поддерживать эти устройства. Вы можете использовать симулятор iOS для захвата скриншотов с разными разрешениями. Ваше приложение будет работать в compatibility mode
на устройствах с новым разрешением, если оно не сможет найти изображение запуска для определенного разрешения. compatibility mode
означает, что ваше представление будет масштабироваться, чтобы соответствовать новому размеру экрана, при сохранении того же логического размера.
ИЗМЕНИТЬ:
Я думаю, что оп неправильно понимает, что означают @2x
и @3x
. Разрешение iPhone 6 — 750(pixels) x 1334(pixels), 326 pixels per inch
. Это НАСТОЯЩЕЕ разрешение. А 375(points) x 667(points)
— это логический размер, если поддерживается родное разрешение. Разрешение iPhone 6 Plus — 1242(pixels) x 2208(pixels), 401 pixels per inch
, а логический размер — 414(points) x 736(points)
.
Вот как изображения с разным разрешением работают на устройстве iOS:
Допустим, вы хотите запустить свое приложение на iPhone 4s, iPhone 5/5S, iPhone 6/plus. Первое, что вам нужно сделать, это предоставить 4 образа запуска для поддержки собственных разрешений этих устройств. Когда iOS запускает ваше приложение, оно проверяет, предоставляет ли приложение правильное изображение запуска для поддержки родного разрешения текущего устройства. Если iOS найдет его, используйте его во время запуска, и логический размер экрана будет правильным, ваше приложение будет работать как обычно. В противном случае ваше приложение будет работать в compatibility mode
, в котором будут масштабироваться все представления.
Предположим, в вашем приложении есть изображение с именем foo.png
, логический размер которого равен 100(points) x 100(points)
. Вы хотите, чтобы это изображение выглядело одинаково на всех вышеперечисленных устройствах. Вы должны предоставить 2 версии этого изображения. Один из них 200(pixels) x 200 (pixels)
и должен называться foo.png@2x
, а другой - 300(pixels) x 300(pixels)
с именем foo.png@3x
. Если вы загрузите это изображение с [UIImage imageNamed:@"foo"]
, на устройствах, кроме iPhone 6 Plus, приложение загрузит изображение с именем foo.png@2x
. В противном случае приложение загрузит foo.png@3x
и сэмплирует его до 300 * 84% (пикселей) x 300 * 84% (пикселей).
И если вы загружаете изображение с URL-адреса и вам нужно отобразить его во время выполнения. Допустим, вы получили размер {width:100, height:100}
, масштаб 1.0
. Это означает, что РЕАЛЬНЫЙ размер этого изображения равен 100 * 1.0(pixels) x 100 * 1.0(pixels
. Если вы не хотите, чтобы он масштабировался, вам нужно рассчитать логический размер самостоятельно. Вы делаете это так:
UIImage *image = ... // you get it from an url
CGFloat scale = [UIScreen mainScreen].scale;
CGFloat width = image.size.width / scale;
CGFloat height = image.size.height / scale;
CGRect frame = CGRectMake(50.0f, 50.0f, width, height)];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:frame];
imageView.contentMode = UIViewContentModeCenter;
imageView.image = image;
[self.view addSubview:imageView];
person
wcd
schedule
11.12.2014
@2x
и@3x
, а не базовое изображение? - person temporary_user_name   schedule 13.12.2014