2010-09-14 2 views
1

У меня есть кнопка в моем RootViewController .... , когда я нажимаю на эту кнопку, она перейдет к другому элементу управленияViewView. , но я хочу, чтобы, когда я нажимаю кнопку «Ориентация кнопки otherViewController», должен быть Пейзаж &, когда я возвращаюсь с этой страницы (otherViewController), я должен снова вернуться в портретный режим.Фиксация ориентации контроллеров вида

благодарит за любую помощь. Plz помогите мне, я новый в Iphone, так что не могу справиться с этим.

ответ

0

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

Однако, если вы хотите, чтобы ваш RootViewController всегда отображал свой вид на портрете, а ваш другой мониторViewView всегда отображал представление itvs в ландшафте, это достаточно просто.

В .h вашего RootViewController в:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

В вашем .h OtherViewController в:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft); 
} 

Хотя это, вероятно, будет лучше, так как это позволило бы как пейзаж левый и ландшафтные правый повороты:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return UIInterfaceOrientationIsLandscape(interfaceOrientation); 
} 
+0

Hi shaggy ....
user440485

+0

Прошу прощения, но это не дает другомуViewController в Landscape on Buton click. – user440485

+0

I m using 4.0 .. – user440485

-1

Возможно, это помогает.

в viewWillAppear Вашего нового контроллера представления добавить

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscape] 

и viewWillAppear вашего корня ViewController добавить

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait]; 

Это вызовет предупреждение, но это работает.

+1

Кроме того, это недокументированный API и причина отклонения приложения. –

1

Примечание в IOS 6 shouldAutorotateToInterfaceOrientation является deprecated. Вместо этого вы должны использовать supportedInterfaceOrientations и вернуть UIInterfaceOrientationMask.

Так, например:

- (NSUInteger)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskLandscape; 
} 

Вот все варианты UIInterfaceOrientationMask вы можете вернуться:

UIInterfaceOrientationMaskAll 
UIInterfaceOrientationMaskAllButUpsideDown 
UIInterfaceOrientationMaskLandscape 
UIInterfaceOrientationMaskLandscapeLeft 
UIInterfaceOrientationMaskLandscapeRight 
UIInterfaceOrientationMaskPortrait 
UIInterfaceOrientationMaskPortraitUpsideDown 

Вы должны также рассмотреть вопрос о preferredInterfaceOrientationForPresentation.