2012-03-06 3 views
0

Я бы хотел, чтобы приложение работало так, как будто я заблокировал ориентацию вручную. Я пытаюсь найти, как я могу заблокировать ориентацию для приложения. В info.plist, у меня есть эта установка:Заблокировать ориентацию в приложении iPad (plist или UIViewController?)

Supported interface orientations (iPad) 
Item 0 Landscape (right home button) 
Item 1 Landscape (left home button) 

Я подумал, что было бы достаточно, чтобы держать мои viewControllers от пребывания в ландшафтном режиме, а не портрет. Но это не так. Нужно ли мне делать

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

В ВСЕМ МОЙ взглядКонтроллеры? Благодаря!

ответ

0

Все, хотя реализация shouldAutorotateToInterfaceOrientation во всех контроллерах вашего вида будет работать, это, вероятно, не самый быстрый или самый практичный способ выполнить то, что вы пытаетесь выполнить.

Если какой-либо из ваших контроллеров представления в вашей иерархии не соответствует изменению ориентации, iOS перестанет пытаться их повернуть. Это означает, что только ваш контроллер корневого представления должен реализовывать shouldAutorotateToInterfaceOrientation только с ориентацией на ландшафт. Каждый контроллер отображения, нажатый или добавленный, будет соответствовать этой функции.

0

Мне пришлось сделать это в нескольких моих приложениях, и это потребовалось по нескольким причинам.

В конце и после большого количества испытаний мы определили, что условие должно быть установлено на info.plist И на каждом viewController.

Поэтому убедитесь, что он установлен на plist и что каждый shouldAutorotateToInterfaceOrientation возвращает только да для разрешенной ориентации.

Это потому, что plist поможет вам с разрешенными ориентациями LAUNCH, но ваше приложение все равно может вращаться, особенно при использовании модальных видов.

Вы можете скачать один из моих бесплатных приложений, что делает редеет на IPad: http://itunes.apple.com/mx/app/hoteles-city/id471505865?mt=8

0

Да вы делаете.

У меня есть другое решение. В каждом UIViewController я использую:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    // Return YES for supported orientations 
    if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft){ 
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft); 
    } else if (interfaceOrientation == UIInterfaceOrientationLandscapeRight) { 
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight); 
    } else { 
     return NO; 
    } 
} 
Смежные вопросы