2013-04-28 4 views
1

Я хотел бы создать отдельное представление, когда я поворачиваю свое приложение с портрета на пейзаж в iOS 6. Единственная значительная документация, которую я могу найти, находится на сайте Apple Developer, но она не очень тщательная.Создание альтернативного ландшафтного интерфейса

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

мне удалось заставить его работать, используя некоторые DEPRECATED IOS 5 методов, но это не дурак доказательство или безаварийности и в настоящее время более 80% пользователей IOS используют IOS 6.

Благодарности

+1

Я еще не сделал что-то вроде этого, но мой подход будет иметь UIViewController с два UIViews как подпункты. В зависимости от поворота вашего устройства видно только одно. В willAnimateRotationToInterfaceOrientation: продолжительность: вы можете скрыть/отобразить специальные представления. – pmk

ответ

4

После ПМК предложения , Я продолжу и предлагаю вам сделать следующее:

В вашем файле xib создайте два разных вида, помимо представления UIViewController. Один из них должен быть в портретном режиме, а другой - в пейзаже.

Объявите два вида IBOutlet в файле интерфейса, и соединить их с видом я объяснил выше:

IBOutlet UIView *portraitView; 

IBOutlet UIView *landscapeView; 

Теперь в вашем файле реализации, вы должны быть «в курсе» изменений в ориентации, и вы установите правильный вариант в зависимости от ориентации. В вашем viewDidLoad вы можете поставить:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:UIDeviceOrientationDidChangeNotification object:nil]; 

И вот, наконец, вы реализуете что-то вроде этого:

-(void)didRotate:(NSNotification *)notification 
{ 
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; 

    if (orientation == UIDeviceOrientationLandscape) 
    { 
     portraitView.hidden = YES; 
     landscapeView.hidden = NO; 
    } 
    else if (orientation == UIDeviceOrientationPortrait) 
    { 
     portraitView.hidden = NO; 
     landscapeView.hidden = YES; 
    } 
} 
+0

Большое спасибо, но код выше не работает и загружен с ошибками. Давайте сделаем вид, что я полный идиот и нуждаюсь в ТОЧНО СОВЕРШЕННО работая проверенный функциональный код, или я никогда не пойму проблему. Благодарю. – 2013-04-28 19:25:44

+0

Натан. Я сделал все, что вы указали, и исправил ошибки (полуколоны вместо двоеточий, добавил @properties), и ничего не происходит. Я просто получаю пустой вид, никаких звонков на портрет или пейзаж. – 2013-04-28 21:16:40

+0

Вы добавляете subviews? '[self.view addSubview: viewPortrait];' Я забыл упомянуть об этом. –

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