iPhone 6 другая раскадровка?

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

 //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 айфона, вопрос правильно ли делать 5storyboards для всех айфонов и айпадов? мне кажется, что это неправильно, но я не смог найти способ упорядочить представления на одном устройстве и сделать так, чтобы оно соответствовало всем остальным, и быть уверенным, что оно всегда работает отлично.

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


person Curnelious    schedule 15.09.2014    source источник
comment
Начиная с iOS 8 вы можете использовать единую раскадровку с адаптивным пользовательским интерфейсом для всех iPhone и iPad со всеми размерами экрана.   -  person Robotic Cat    schedule 16.09.2014


Ответы (3)


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

person i_am_jorf    schedule 15.09.2014
comment
Итак, когда я открываю раскадровку и начинаю проектировать, какой iPhone мне выбрать? - person Curnelious; 15.09.2014
comment
Да, до сих пор можно было не использовать авторазметку, но теперь я думаю, что это стало гораздо важнее. - person Bhumit Mehta; 15.09.2014
comment
@Curnelious, вероятно, с самым маленьким разрешением. В противном случае это не имеет значения, потому что пользовательский интерфейс будет автоматически растягиваться Autolayout. - person Ben Affleck; 17.09.2014

Лучший подход — использовать 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 plus, добавьте изображения запуска.

введите здесь описание изображения

person bpolat    schedule 28.09.2014
comment
Этот подход не рекомендуется, начиная с ios7/8, вместо этого используйте Autolayouts. - person vishal dharankar; 17.10.2014

Вы должны проектировать пользовательский интерфейс для wAny/hAny "класса размера" в Интерфейсном Разработчике. Примените ограничения автоматического макета, чтобы описать, как представления должны адаптироваться к различным классам размеров. При необходимости вы можете переопределить некоторые ограничения для определенных классов размеров.

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

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

person Bennett Smith    schedule 24.09.2014
comment
Иногда есть причина, по которой классы размера не будут охватывать, при отправке приложения Apple требует совместимости с дисплеем 3.5 (на момент написания). Автомакет, который подходит для iPhone 5 до 6+, просто слишком тесный для iPhone 4. - person aremvee; 21.01.2016