Xcode 4.5 фоновое изображение iPhone 4, 4s, 5

У меня в viewController.m написан фоновый код:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"image.png"]];

И у меня есть правильные названия разных картинок:

image.png for non-retina display (320x480)

[email protected] for retina display (640x960)

[email protected] for iPhone 5 (640x1136)

Но когда я запускаю его в симуляторе, он не берет изображение[email protected] для экрана iPhone 5, он берет только изображение@2x для экрана 4s и масштабирует его по размеру экрана... Я не знаю, есть ли какая-нибудь кодировка для использования экрана image-568h@2x для iPhone 5?

Я использую Xcode 4.5


person Peter    schedule 25.10.2012    source источник
comment
какую версию Xcoe вы используете?   -  person Jigar Pandya    schedule 25.10.2012
comment
Исходный вопрос: stackoverflow.com/questions/13055007/ Вместо того, чтобы воссоздавать вопросы, рассмотрите возможность предоставления дополнительной информации в исходном вопросе, получения небольшой репутации и запуска вознаграждения.   -  person A-Live    schedule 25.10.2012
comment
версия 4.5, что значит запустить баунти?   -  person Peter    schedule 25.10.2012
comment
это означает предложить больше баллов тому, кто ответит на этот вопрос... если вы предложите 50 вознаграждений, которые будут добавлены тому, кого вы примете, ответят и спишут с вашего счета...   -  person Jigar Pandya    schedule 25.10.2012


Ответы (3)


iPhone 5 имеет сетчатку, как и iPhone 4 и 4S, и изображение @2x будет использоваться автоматически для всех этих устройств. Это только загрузочный образ, который называется «-568h@2x» для iPhone 5. Вам нужно написать некоторый код, чтобы использовать другой образ, что-то вроде этого будет работать:

NSString *filename = @"image.png";
CGRect screenRect = [[UIScreen mainScreen] bounds];
if (screenRect.size.height == 568.0f)
    filename = [filename stringByReplacingOccurrencesOfString:@".png" withString:@"-568h.png"];

imageView.image = [UIImage imageNamed:filename];
person TheQ    schedule 25.10.2012

если вы пытаетесь использовать [UIImage imageNamed:@"image.png"] и ожидаете, что [email protected] будет автоматически выбран из пакета для iPhone 5, это не сработает. Автоматический выбор работает только для iPhone 4 и 4S.

Только изображение по умолчанию с именем [email protected] будет автоматически выбрано в iPhone 5.

для обычных изображений, если у вас есть отдельное изображение для iPhone 5, попробуйте использовать этот код

CGRect screenBounds = [[UIScreen mainScreen] bounds];
if (screenBounds.size.height == 568) {
    // code for 4-inch screen
} else {
    // code for 3.5-inch screen
}
person Roshit    schedule 25.10.2012

Я считаю неверным предполагать, что вы можете применить трюк -568h@2x ко всем файлам изображений. Я думаю, что это работает только для [email protected]. Это файл, который iOS ищет при запуске приложения на устройстве с 4-дюймовым дисплеем, а также «флаг», чтобы включить поддержку 4-дюймового дисплея в SDK. Например, как только вы включите этот конкретный файл, ваши табличные представления заполнят экран.

Я ничего не читал, чтобы предположить, что вы можете просто предоставить любое изображение с компонентом имени файла -568h@2x и использовать его автоматически. Вам придется сделать это самостоятельно в зависимости от размера экрана, например. [UIScreen mainScreen].bounds.size.height.

person Mark Granoff    schedule 25.10.2012