2014-09-15 6 views
1

Когда у нас был iPhone 4 and 5, мы проверили размер экрана и сделали 2 раскадровки для каждого iPhone.iPhone 6 - другая раскадровка?

//iPhone 4 
    if (height == 480) 
    { 
     storyboard = [UIStoryboard storyboardWithName:@"StoryboardiPhone" bundle:nil]; 
     NSLog(@"Device has a 3.5inch Display."); 
    } 
    //iPhone 5 
    else if (height == 568) 
    { 
     storyboard = [UIStoryboard storyboardWithName:@"StoryboardiPhone5" bundle:nil]; 
      NSLog(@"Device has a 4inch Display."); 
    } 
    //iPads 
    else 
    { 
     storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil]; 
     NSLog(@"Device has a iPad Display "); 

    } 

Теперь есть еще 2 айфонов, вопрос в том, правильно ли это сделать storyboards для всех iPhone'ов и IPad? Мне кажется, что это неправильно, но я не мог найти способ упорядочить представления на одном устройстве и сделать его подходящим для всех остальных - и обязательно, чтобы он всегда отлично работает.

Каким будет правильный подход прямо сейчас?

+0

На IOS 8 вы можете использовать одну раскадровку с адаптивным интерфейсом для всех iPhone'ов и IPADS со всеми размеры экрана. –

ответ

2

Нет, вы должны использовать AutoLayout и написать соответствующие ограничения и позволить системе изменять размер пользовательского интерфейса для различных размеров.

+0

Итак, когда я открываю раскадровку и начинаю разрабатывать, какой iPhone я должен выбрать? – Curnelious

+0

Да, не используя автозапуск, было нормально до сих пор, но теперь я думаю, что его стало намного более важным. –

+0

@Curnelious, вероятно, с наименьшим разрешением. В противном случае это не имеет значения, поскольку пользовательский интерфейс автоматически растягивается с помощью Autolayout. – Andy

1

Вы должны проектировать пользовательский интерфейс для WAny/hAny "size class" в Interface Builder. Примените ограничения автоматического макета, чтобы описать, как представления должны адаптироваться к разным классам. Если вам нужно, вы можете переопределить некоторые ограничения для определенных классов размеров.

Код, который у вас был до этого, выбранный раскадровкой для загрузки на основе устройства должен быть удален. Он больше не нужен, если вы используете классы размера.

Существует отличное видео WWDC, в котором представлены адаптивные классы пользовательского интерфейса и размера. Я бы порекомендовал его посмотреть.

+0

Иногда есть причина, по которой классы размера не будут покрываться, при отправке приложения Apple требует 3,5-дюймовой совместимости с дисплеем (с момента написания). Автозапуск, который подходит для iPhone 5 до 6+, просто сильно судороги для iPhone 4 – aremvee

5

Наилучший подход - использование AutoLayout, но если по какой-то причине вам по-прежнему нужно использовать разные раскадровки для разных размеров экрана, ниже приведен рабочий код.

if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) { 
    //iPad 
    storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPad" bundle:nil]; 
}else{ 
    if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone){ 
     // The iOS device = iPhone or iPod Touch 
     CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size; 
     if (iOSDeviceScreenSize.height == 480){ 
      // iPhone 3/4x 
      storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone3_4X" bundle:nil]; 
     }else if (iOSDeviceScreenSize.height == 568){ 
      // iPhone 5 - 5s - 4 inch 
      storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone5_5S" bundle:nil]; 
     }else if (iOSDeviceScreenSize.height == 667){ 
      // iPhone 6 4.7 inch 
      storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone6" bundle:nil]; 
     } else if (iOSDeviceScreenSize.height == 736){ 
      // iPhone 6 Plus 5.5 inch 
      storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone6Plus" bundle:nil]; 
     } 

    } 
} 

Чтобы включить родное разрешение iPhone 6 и iPhone 6 плюс экран добавить запуск изображения

enter image description here

+0

Этот подход обескураженные, начиная с ios7/8, используют Autolayouts вместо –

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