Различный ландшафтный и портретный дизайн

Привет, у меня есть портретный дизайн моего приложения, и я хочу изменить этот дизайн, когда пользователь поворачивает устройство.

Что-то такое:

Портрет:

Кнопка 1 — Кнопка 2

Кнопка 3 — Кнопка 4

Пейзаж:

Кнопка 1 - Кнопка 2 - Кнопка 3 - Кнопка 4

Я не знаю, является ли следующий способ лучшим:

[[NSNotificationCenter defaultCenter] addObserver:self
                       selector:@selector(didRotate:)
                       name:UIDeviceOrientationDidChangeNotification
                       object:nil];
- (void) didRotate:(NSNotification *)notification{
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
    if (orientation == UIDeviceOrientationLandscapeLeft)    {
        HERE CHANGE THE CONSTRAINS
    }
}

Спасибо за все.


person Pablo Garcia    schedule 29.07.2015    source источник


Ответы (2)


You can do this with using Size Class. i did this... 
1. First Desigh Screen in wAny - hAny and set all Constrains
2. For Portrait select wCompact - hRegular and go to Size inspector
3. In Descendant Constrains there are many Constrains select one by one (double click on that)
4. you can see two + button. perss it and select wCompact - hRegular. it shownew field set Constrains (Size). do this for all Constrains.
5. Now for Landscape in storybord select wRegular - hCompact and do this same...

Работать как если - иначе если условие... если (Портрет){ это } иначе если (Пейзаж) { это }

person Nikhil Modi    schedule 30.07.2015

Почему бы не использовать классы размеров? Класс размера — это свойство, применяемое к любому представлению или контроллеру представления, которое представляет количество содержимого, которое может отображаться в заданном горизонтальном или вертикальном измерении. Классы размера доступны начиная с iOS8. Уже почти 90% устройств используют iOS8, но, конечно, это зависит от ваших требований.

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/LayoutandAppearance.html

Если вы хотите поддерживать более старые версии iOS, ваш подход также хорош.

person Mobile Developer    schedule 29.07.2015
comment
Спасибо! еще один вопрос. В классах размера, каковы w и h для пейзажа? - person Pablo Garcia; 29.07.2015
comment
Это зависит от устройства. Это отличается для iPad и iPhone. Когда вы используете autolayout, вы не должны уделять этому слишком много внимания. Ознакомьтесь с этим руководством raywenderlich.com/83276/beginning-adaptive-layout-tutorial есть глава о классах размеров. Хорошо иметь хорошее представление о классах autolayout/size, прежде чем приступать к реализации. - person Mobile Developer; 29.07.2015