2012-10-05 1 views
3

В предыдущей публикации о миграции на iPhone 5 упоминалось только добавление нового размера изображения запуска * и, возможно, использование AutoLayout, если это необходимо.Работа с изображениями разных размеров в xib для iPhone5 и iPhone4?

Но у меня есть несколько xibs, где есть фоновое изображение, которое заполняет весь экран (возможно, может быть минутная навигация и панель вкладок, в зависимости от вида). Для поддержки iPhone 5 мне теперь понадобятся разные изображения для разных размеров экрана, как это делается в xib или в другом месте?

(* кстати, что вы делаете, если приложение не использует запуска образ?)

ответ

3

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.

+1

Это делает это программно, поэтому xibs с фоном больше нельзя использовать? – Gruntcakes

+0

Если iOS не может обрабатывать автоматическое изменение размера на основе соглашения об именах, я не вижу другой возможности. Хотя мне бы хотелось узнать, есть ли выход! – Ravi

+0

Существует другой способ программно обрабатывать более высокие изображения. https://github.com/gaj/imageNamed568 – UIBuilder