旋转时导航栏和标签栏

时间:2012-05-02 20:50:13

标签: ios tabbar navigationbar

我有四个控制器用于标签栏和它的视图,当我旋转手机时,我希望它只为一个控制器调用方法shouldAutorotateToInterfaceOrientation但是它为所有控制器调用方法。

如何只为其中一个控制器调用shouldAutorotateToInterfaceOrientation?

2 个答案:

答案 0 :(得分:1)

你没有“调用”这些方法,那些是从UIViewController继承的任何类调用的方法。
无论如何都没有理由不让他们被召唤。
您可以做的是决定为您的任何控制器覆盖任何这些方法 该方法返回一个布尔值,如果返回true,则视图正在旋转,如果返回false,则不是。

您还可以决定根据方向返回YES / NO,以支持一个特定的方向

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

在这种情况下,仅当新方向为纵向时才会旋转视图。

答案 1 :(得分:0)

谢谢 JP Hribovsek ,我使用beginGeneratingDeviceOrientationNotifications解决了它,当设备的方向发生变化时通知我。例如:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

[[NSNotificationCenter defaultCenter] addObserver: self 
                                         selector: @selector(deviceRotate:) 
                                             name: UIDeviceOrientationDidChangeNotification 
                                           object: nil];

-(void) deviceRotate: (NSNotification*) notification
{
    UIDeviceOrientation interfaceOrientation = [[UIDevice currentDevice] orientation];

    if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight) {    
        NSlog(@"Landscape");    
    }
}