2012-05-21 6 views
4

У меня есть 5 вид в раскадровке. Я хочу, чтобы каждая ориентация вида была другой, например, один вид будет UIInterfaceOrientationLandscapeRight другой вид будет UIInterfaceOrientationLandscapeLeft или UIInterfaceOrientationPortrait или UIInterfaceOrientationPortraitUpsideDown. Итак, как установить эту ориентацию вида по-разному.set UIInterfaceOrientation во время выполнения

Я использовал [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight]; , но он показывает предупреждение «UIDevice может не отвечать на setOrientation». По мнению многих из StackOverflow писателей я использую

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 
    //return UIInterfaceOrientationLandscapeLeft; 
    return (toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown); 
} 

это выше код, но он не работает в моем проекте. Итак, какова правильная процедура ориентации экрана. Спасибо заранее.

ответ

2

Попробуйте

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:YES]; 

Вы можите установить UIDeviceOrientation, потому что это физический параметр. Если вы держите устройство в руке на портрете - как вы программным образом установите его в альбом?). UIDeviceOrientation - означает ориентацию устройства, а не интерфейс. Этот ответ описывает различия между ориентациями: https://stackoverflow.com/a/3897243/194544

+0

Так можно ли программно сохранить мое устройство в портретном режиме? – Banshidhari

+0

Сохранять возврат от shouldAutorotateToInterfaceOrientation ДА для портретной ориентации. – beryllium

0

Вы должны положить -(BOOL)shouldAutorotateToInterfaceOrientation: в каждый viewController и проверить правильность ориентации. Если вы нажмете viewController, который поддерживает только, например. upsideDown, он будет представлен вверх ногами.

Примечание:

  • Если вы находитесь в среде TabBar, поведение отличается. Пожалуйста, спросите, если это так.
  • Если вы говорите о RootViewController ваше приложение должно быть установлено соответствующее первому ViewController (Info.plist)
0

Свойство ориентации на UIDevice является только для чтения.

Вы можете использовать [UIViewController attemptRotationToDeviceOrientation];, чтобы попытаться повернуть все контроллеры просмотра до устройств текущей ориентации. Вы не можете принудительно установить вращение.

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