iOS (iPhone / iPad) SDK - Как повернуть приложение из кода (возникают проблемы с UITabBarController) - PullRequest
0 голосов
/ 10 августа 2011

В моем делегате приложения я переопределил mustAutorotateToInterfaceOrientation в моем UITabBarController (не волнуйтесь - я не создал его подкласс!;)).Я сделал это так:

(Низ AppDelegate.h):

@interface UITabBarController (MyApp)
@end

(Низ AppDelegate.m):

@implementation UITabBarController (MyApp) 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
    if(self.selectedIndex==4) 
        return (toInterfaceOrientation == UIInterfaceOrientationPortrait);
    else
        return (toInterfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
@end

В настоящее время у меня естьтак что, когда я перехожу на определенную вкладку (индекс 4), она не будет поворачиваться в альбомную ориентацию при повороте устройства (что я и хочу).Хотя проблема в том, что если приложение уже в альбомной ориентации, и вы нажимаете на это представление, оно в альбомной ориентации (я хочу, чтобы оно оставалось портретным). (ПРИМЕЧАНИЕ: приложение вращается нормально, если я позволю этому, поэтому работа с shouldAutorotateToInterfaceOrientation не должна действительно решить проблему (или это может произойти))

Я нашел этот UITabBarControllerМетод делегата:

- (void)tabBarController:(UITabBarController *)theTabBarController didSelectViewController:(UIViewController *)tabViewController {
    NSUInteger indexOfTab = [theTabBarController.viewControllers indexOfObject:tabViewController];
    if (indexOfTab == 4) {
        //FILL GAP HERE!
    }
}

Я пробовал это:

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

Но он вращает только строку состояния - не все приложение.Есть ли какой-нибудь метод (или что-нибудь еще) в UITabBarController, который будет поворачивать его в портрет, чтобы заполнить пробел выше?

Извините, если это никого не смущает.

Ответы [ 2 ]

0 голосов
/ 12 августа 2011

Используется transform и setStatusBarOrientation - хотя у него есть некоторые побочные эффекты (придется сделать сейчас).

0 голосов
/ 10 августа 2011

Просто реализуйте shouldAutorotateToInterfaceOrientation: toInterfaceOrientation: для контроллера представления, используемого на вкладке, который вы не хотите вращать, и убедитесь, что он возвращает NO для недопустимых ориентаций.

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