2015-02-05 6 views
3

Я работаю над своим первым проектом Xcode, и мне интересно, есть ли у вас 2 контроллера вида, один из которых будет иметь портретный вид, а второй - горизонтальный. Есть ли способ связать эти два контроллера представления так, чтобы при повороте устройства вид изменился?Изменить контроллер представления на вращение устройства

+0

Вы хотите, чтобы у вас был совершенно другой вид на вращение или вы просто хотите, чтобы подпункты отрегулировали свой размер? Если последнее, вы должны использовать AutoLayout или классы размера вместо этого. – BSMP

+0

Я хочу совершенно другой вид, когда он повернут – John

ответ

0

В viewDidLoad добавьте повернутое представление в супервизор и зарегистрируйте наблюдателя в UIDeviceOrientationDidChangeNotification с помощью объекта: [UIDevice currentDevice]. На селекторе установлен его кадр. Затем поверните новый повернутый вид, и установить альфа прежнию на 0,0

- (void)deviceOrientationChangedNotification:(NSNotification *)notification 
{ 
    UIDevice *device = [notification object]; 
    UIDeviceOrientation orientation = device.orientation; 

    if (orientation == UIDeviceOrientationLandscapeLeft || orientation == UIDeviceOrientationLandscapeRight) 
    { 
     [rotatedView setTransform:CGAffineTransformMakeRotation(M_PI_2)]; 
     rotatedView.frame = [UIScreen mainScreen].bounds; 
     oldView.alpha = 0.0; 
    } 
} 
+0

Где вы добавляете повернутый вид в супервизор в вашем примере кода? – Caleb

+0

Я стою исправленный, я добавляю представление как subview в viewDidLoad. – rcat24

0

Я не рекомендую вам сделать это, потому что есть некоторые контроллеры intuitives пользовательского интерфейса, яблоко, предназначенные для управления навигацией приложения , вы не можете позволить пользователям угадать, как выполнять некоторые задачи в вашем приложении, вы должны показать им, как это сделать. Итак, поверните устройство, чтобы перейти к другому контроллеру, как вы сказали: я хочу совершенно другое представление, когда оно повернуто ... Не очень хорошая идея.

Читать далее Руководство КСН Human Interface, чтобы увидеть, что рекомендуемое и что это не так:

iOS Human Interface Guidelines

В частности, читаем: Adaptivity and Layout:

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

+0

Возможно, вы могли бы уточнить причину, по которой вы рекомендуете против нее? HIG покрывает много земли - предоставляя именно эту ссылку, на самом деле не помогает объяснить ваши рассуждения. (Кроме того, никогда не рекомендуется, чтобы ваш ответ полностью полагался на ссылку - ссылки действительно ломаются.) – Caleb

+0

Это не очень хорошая идея, чтобы перейти на другой viewController. Мне нужно повернуть divice, что не является интуитивным и правильный способ управления навигацией приложения (это то, что он хочет). Очевидно, что он очень любитель и не читал путеводитель по яблоку о inteface iOS (то, что я рекомендовал ему со ссылкой, и я не буду объяснять ему все путеводители по этому пути). –

+0

Это не редкость для приложения, чтобы представить себя по-разному в разных направлениях - например, попробуйте использовать приложение «Акции» Apple. Иногда один контроллер просмотра может управлять обеими ориентациями, но в то же время может иметь смысл использовать отдельные контроллеры для каждой ориентации. Обратите внимание, что слово * безвозмездное * не означает * все *. Я не говорю, что вы ошибаетесь, просто невозможно понять вашу рекомендацию, если вы не объясните это. – Caleb

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