2

有没有人在旋转设备时成功隐藏了 UITabbar?

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

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

选项卡栏仍然可见

或者它随着视图消失

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

因此,如果有人成功完成了这项任务,任何建议将不胜感激!

谢谢

汤姆

4

3 回答 3

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];
}

然后您可以仅从所需的视图控制器旋转。

隐藏标签栏:

获取对应用委托和标签栏控制器的引用,然后将标签栏设置为隐藏:

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

希望这可以帮助!

于 2010-05-07T08:35:47.363 回答
1

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

我使用 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;
        }
    }
}
于 2010-02-18T10:54:31.503 回答
-1

你真的可以在 UItabbarController 中隐藏标签栏吗?至少笔尖不允许您从底部栏下拉菜单中选择无。

于 2010-04-21T18:21:34.590 回答