В моем делегате приложения я переопределил 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, который будет поворачивать его в портрет, чтобы заполнить пробел выше?
Извините, если это никого не смущает.