代码之家  ›  专栏  ›  技术社区  ›  quantumpotato

如何在第一次加载时隐藏选项卡,并在以后的屏幕上显示?

  •  0
  • quantumpotato  · 技术社区  · 14 年前

    .hidesbottombarwhenpushed=no;不起作用,因为视图没有被推。我希望选项卡隐藏在第一个屏幕上,并能在几屏之后再次显示。

    我该怎么做?

    2 回复  |  直到 14 年前
        1
  •  1
  •   adam    14 年前

    子类化您的uitababarcontroller并添加这样的函数

    - (void) hideTabBar:(BOOL)hide animated:(BOOL)animated {
    
        if (tabBarHidden == hide) { return; }
    
        if (animated) {
            [UIView beginAnimations:nil context:NULL];
            [UIView setAnimationDuration:1.5];
        }
    
        for(UIView *view in self.view.subviews) {
    
            if([view isKindOfClass:[UITabBar class]]) {
    
                if (!hide) {
                    [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y-49, view.frame.size.width, view.frame.size.height)];
                } else {
                    [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y+49, view.frame.size.width, view.frame.size.height)];
                }
            } else {
                if (!hide) {
                    [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, view.frame.size.height-49)];
                } else {
                    [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, view.frame.size.height+49)];
                }
    
            }
        }
    
        if (animated) { [UIView commitAnimations]; }
    
        tabBarHidden = hide;
    
    }   
    

    同时,添加这样一个函数,允许选项卡栏旋转

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
        return allowRotate;
    } 
    
        2
  •  1
  •   TechZen    14 年前

    这将很困难,因为选项卡被设计为应用程序UI的顶级。文件对此非常清楚。因此,在控制器层次结构中,它们不能很好地发挥作用。

    实现所需功能的唯一方法就是在希望选项卡出现时以编程方式创建它。但是,我不能说这会产生可靠的代码。塔巴会一直和你战斗。

    你真的应该重新考虑你的用户界面设计。以非标准方式使用选项卡会使您的用户感到困惑。由于标准是在用户界面的顶层设置标签栏,所以当用户看到标签栏时,他们会认为自己处于顶层。他们会迷失方向。你真的需要坚持标准用法,这样你的应用程序就符合用户所学的界面语法。

    iPhone Human Interface Guidelines.