旋转设备iPhone时隐藏UITabBar

时间:2010-02-18 10:05:30

标签: iphone uitabbarcontroller rotation uitabbar

旋转设备时是否有人成功隐藏了UITabbar?

我在UItabbar控制器中有一个视图,我旋转(因此有效地旋转一个选项卡)

当发生这种情况时,我希望标签栏消失......但似乎没有任何效果!

标签栏仍然可见

或者它随着视图一起消失

或者标签栏消失,视图不再旋转!

因此,如果有人成功完成了这项任务,我们将非常感谢任何建议!

由于

汤姆

3 个答案:

答案 0 :(得分:2)

对不起,迟到的回复pk

我设法旋转并隐藏了标签栏。

首先是一个子类化UITabBarController的情况,包括这个方法:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    //This allows us to get the rotation calls from any view in the tab bar
    // 

    return [self.selectedViewController shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation];
}

然后您只能从所需的视图控制器旋转。

隐藏标签栏:

获取对app delegate和Tab栏控制器的引用,然后将标签栏设置为隐藏:

MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
UIView *tabBar = [delegate.tabBarController.view.subviews objectAtIndex:1];
tabBar.hidden = TRUE;

希望这有帮助!

答案 1 :(得分:1)

您是否尝试在视图控制器中的UIDeviceOrientationDidChangeNotification通知上添加观察者,并在此回调中执行“隐藏=真或假”?

我使用MonoTouch框架使用以下C#代码成功完成了这项工作。

void Initialize ()
{
    NSNotificationCenter.DefaultCenter.AddObserver("UIDeviceOrientationDidChangeNotification", DeviceRotated);          
}

private void DeviceRotated(NSNotification notification)
{
    if ( notification.Name.Equals("UIDeviceOrientationDidChangeNotification") )
    {
        Console.WriteLine(UIDevice.CurrentDevice.Orientation.ToString());
        if ( UIDevice.CurrentDevice.Orientation != UIDeviceOrientation.Portrait ) 
        {
            tabBar.Hidden = true;
            //Plus some additional logic.
        }
        else
        {
            tabBar.Hidden = false;
        }
    }
}

答案 2 :(得分:-1)

你真的可以隐藏UItabbarController中的标签栏吗?至少笔尖不允许您从底栏下拉列表中选择任何一个。