Here's ссылку, которая действительно поможет вам. Сохраните изображение запуска, iOS автоматически не выберет правильное изображение, если вы положили «[email protected]» в конце имени файла. Есть несколько вспомогательных методов, упомянутых в above link, которые облегчат вашу работу.
я принял код в ссылках, которые я упоминал выше, а вот вспомогательная функция для Obj-C:
-(BOOL) IsTall
{
return ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) && ([[UIScreen mainScreen] bounds].size.height * [[UIScreen mainScreen] scale] >= 1136);
}
Немного категории, пишущего бы тоже помочь.
@interface NSString (Special)
-(NSString*)correctImageNameForiPhone5
@end
@implementation NSString (Special)
-(NSString*)correctImageNameForiPhone5
{
if([self isTall])
return [email protected]_-; //Do the correct NSString magic here
else
return -originalImageName-;
}
@end
Наконец, когда вы обращаетесь к объекту UIImage:
NSString *filename = @"backgroundImage.png";
UIImage *img = [UIImage imageNamed:[filename correctImageNameForiPhone5]];
Здесь предполагается, что вы бы все ваши iPhone5 специфические имена файлов изображений, заканчивающиеся «-568h @ 2x». Этот образец кода определенно не сработает, если вы просто запустите его в свой проект, но вы получите эту идею. Для этого нужны некоторые исправления NSString.
Это делает это программно, поэтому xibs с фоном больше нельзя использовать? – Gruntcakes
Если iOS не может обрабатывать автоматическое изменение размера на основе соглашения об именах, я не вижу другой возможности. Хотя мне бы хотелось узнать, есть ли выход! – Ravi
Существует другой способ программно обрабатывать более высокие изображения. https://github.com/gaj/imageNamed568 – UIBuilder