iOS-приложение - изменение ориентации на вкладке - PullRequest
1 голос
/ 10 сентября 2011

В моем приложении у меня есть вкладка с 5 кнопками.Приложение в целом имеет только книжную ориентацию, и я установил его правильно.

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

Иначе, когда оно наклонено, я должен показывать один вид в альбомной ориентации без вкладки, как я могу это сделать?

Ответы [ 4 ]

0 голосов
/ 10 декабря 2012

попробуйте это w.r.t .: tabbar.selectedViewController

[[UIDevice currentDevice] setOrientation:UIDeviceOrientationLandscapeRight];

0 голосов
/ 10 сентября 2011

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

В контроллере каждого представления переопределите этот метод:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

Вы захотитевернуть YES для любой ориентации, которую вы хотите, чтобы представление поддерживало.

Четыре параметра параметра interfaceOrientation:

UIInterfaceOrientationPortrait
UIInterfaceOrientationPortraitUpsideDown
UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight

Так что для вашего случая вам понадобится представлениеКонтроллер хостинга вашего представления и панели вкладок для поддержки всех ориентаций.Вот как должна выглядеть функция:

// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations.
    return YES;
}

Но для дополнительной информации, если вы хотите поддерживать только альбомную ориентацию влево и книжную ориентацию вверх ногами, функция будет выглядеть следующим образом:

// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations.
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown);
}
0 голосов
/ 10 сентября 2011

UITabBar поддерживает только вращение, если ViewControllers всех вкладок возвращают YES в shouldAutorotateToInterfaceOrientation.

Вы можете достичь того, что хотите, если вы позволите вашим «портретным» вкладкам проверить, видны ли они (через

tabbar.selectedViewController 

или tabbar.selectedIndex

и отвечайте «да» только тогда, когда они не выбраны.

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

0 голосов
/ 10 сентября 2011

Итак, чтобы быть ясным, вы хотите, чтобы все приложение и все представления в портретном режиме ЗА ИСКЛЮЧЕНИЕМ для представления, запускаемого второй кнопкой панели вкладок, который вы хотите всегда отображать в альбомной ориентации?Не запутайте свой вопрос, чем просто вставьте следующую строку кода в метод «viewDidLoad» контроллера вида № 2

self.view.transform = CGAffineTransformMakeRotation(M_PI / 2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...