2015-04-17 4 views
0

Может кто-нибудь покажет мне, как обновить приведенный ниже код для работы с iPhone 5, 5s, 6 и 6 +? Когда я проверяю тренажер для вышеупомянутых устройств, изображение не устанавливается в качестве фона ...Обнаруживать iPhone5, 5s, 6 и 6 плюс

UIImageView *backgroundImageView = [[UIImageView alloc] initWithImage:_Image]; 
[backgroundImageView setFrame:[[self view] bounds]]; 
[[self view] addSubview:backgroundImageView]; 
//I EXCPECTED THIS NEXT LINE OF CODE TO WORK TO SET A SEPARATE BACKGROUND FOR IPAD... 
UIImage *Image = [[UIImage alloc]init]; 
if ([[UIScreen mainScreen] bounds].size.height == 480) { 
    // iPhone, iPod Touch 
    Image = [UIImage imageNamed:@"image.png"]; 
} 
if ([[UIScreen mainScreen] bounds].size.height == 568) { 
    // supposably iPhone 5 but only works for 4 
    Image = [UIImage imageNamed:@"image.png"]; 
} 
if ([[UIScreen mainScreen] bounds].size.height == 1024) { 
    // iPad 
    Image = [UIImage imageNamed:@"image.png"]; 
} 
self.view.backgroundColor = [UIColor colorWithPatternImage:Image]; 
+0

Существует множество существующих ресурсов, которые сообщают вам размеры экрана для всех устройств. Пожалуйста, посмотрите на них. Если у вас все еще есть проблемы, обновите свой код с помощью того, что вы попробовали, и объясните проблему, которую вы все еще имеете. – rmaddy

+0

Ok @maddy, тогда почему мой симулятор iPhone5 не загружает изображение, когда «568» - это предполагаемая метрика, чтобы выполнить работу? – zaprogers

+0

Включает ли ваше приложение правильный 4-дюймовый образ запуска? И ваше приложение работает на портрете в то время? – rmaddy

ответ

0
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
    #define IS_RETINA ([[UIScreen mainScreen] scale] >= 2.0) 

    #define SCREEN_WIDTH ([[UIScreen mainScreen] bounds].size.width) 
    #define SCREEN_HEIGHT ([[UIScreen mainScreen] bounds].size.height) 
    #define SCREEN_MAX_LENGTH (MAX(SCREEN_WIDTH, SCREEN_HEIGHT)) 
    #define SCREEN_MIN_LENGTH (MIN(SCREEN_WIDTH, SCREEN_HEIGHT)) 

    #define IS_IPHONE_5 (IS_IPHONE && SCREEN_MAX_LENGTH == 568.0) 
    #define IS_IPHONE_6 (IS_IPHONE && SCREEN_MAX_LENGTH == 667.0) 
    #define IS_IPHONE_6P (IS_IPHONE && SCREEN_MAX_LENGTH == 736.0) 

Затем сравните в вашем если заявления.

UIImageView *backgroundImageView = [[UIImageView alloc] initWithImage:_Image]; 
[backgroundImageView setFrame:[[self view] bounds]]; 
[[self view] addSubview:backgroundImageView]; 

UIImage *Image = [[UIImage alloc]init]; 

if(IS_IPHONE_5) 
    { 
     Image = [UIImage imageNamed:@"image.png"]; 
    } 
    if(IS_IPHONE_6) 
    { 
     Image = [UIImage imageNamed:@"image.png"]; 
    } 
    if(IS_IPHONE_6P) 
    { 
     Image = [UIImage imageNamed:@"image.png"]; 
    } 

Я не понимаю, почему вы делаете это так, хотя .... ли это потому, что ваше изображение искажается основано на различных устройствах? Потому что в IB есть более простые и эффективные способы решения этой проблемы.

+0

. Да, есть странные вещи. Я сделал приложение универсальным первоначально, тестируя его на iPad mini, но понял, что у меня не будет времени добавить код для конкретных устройств для обеих версий, поэтому я просто изменил его на iPhone в настройках развертывания. С тех пор тестирование на моем iPad делает приложение запущенным, как обычное приложение для iPhone, работающего на iPad (тонкая черная рамка вокруг приложения), но по какой-то причине фактические устройства iPhone не загружают изображения должным образом, поэтому я должен сбросьте некоторые фоны, но спасибо за ваш ответ, я попробую. – zaprogers

+0

@zaprogers Прохладный, дайте мне знать, как это происходит, когда вы его пробуете! – John

+1

большое спасибо @john. отлично работает – zaprogers

Смежные вопросы