iPhone SDK: принудительное использование ландшафтного режима для одной части приложения - PullRequest
2 голосов
/ 19 января 2010

Еще один вопрос о ландшафтном режиме.

Мы все видели

[[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationLandscapeRight animated: NO];

Чепуха.Я не смог заставить это работать на симуляторе или на устройстве.

Что я получаю, это:

http://i47.tinypic.com/zl9egh.png

, когда я действительно этого хочу:

http://i45.tinypic.com/xms6cm.png

Как вы могли бы сказать, он переворачивает телефон, но не осознает, что он перевернулся.

Я видел скрытый метод

[[UIDevice currentDevice] setOrientation: UIInterfaceOrientationLandscapeRight];

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

Кто-нибудь знает, как заставить эту чертову штуку выпрямиться?

Ответы [ 2 ]

2 голосов
/ 19 января 2010

В идеале ваш контроллер представления должен реализовать:

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

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

Если у вас нет довольно сложной иерархии представлений, котораяиспользует контроллер панели вкладок, это должно привести к повороту представления при его нажатии.

Если это не работает, вы можете попробовать:

[[UIDevice currentDevice] performSelector:
                               @selector(setOrientation:) 
                           withObject:(id)UIInterfaceOrientationLandscapeRight];

У меня есть приложение в AppStore, котороеиспользует этот код, потому что в моем случае у меня есть сложная иерархия представлений, которая не позволяет работать только той, которая мне нужна, только в альбомной ориентации.

0 голосов
/ 20 января 2010

Если вы хотите повернуть одну часть приложения, вы можете использовать свойство преобразования CGAffineTransform UIView. Для примера проверьте эту тему:

Как применить перспективное преобразование к UIView?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...