完全显示/隐藏tabbar控制器并使用空间

时间:2012-02-16 10:45:26

标签: iphone ios uiimageview uitabbarcontroller

我试图隐藏tabbar控制器并显示uiimageview,就像在iphone的原生照片库中完成它一样。我已经创建了库,但是通过隐藏tabbar我在下一个视图上显示图像时遇到了问题。我可以隐藏tabbar,但是当我尝试添加uiimageview时,它不会消耗到标签栏占用的空间。我希望我的uiimageview能够延伸到屏幕的底部。 我甚至想在那个空白处添加一个按钮,但我无法做到。

隐藏标签栏的代码:

 self.tabBarController.tabBar.hidden = YES;

有人可以帮助我吗?

感谢
的Pankaj

4 个答案:

答案 0 :(得分:0)

试试这个

self.tabBarController.tabBar.hidden = YES;

 [imageView setFrame:CGRectMake(0,0,320,480)];

答案 1 :(得分:0)

只需使用以下两种方法隐藏或显示tabbar控制器。将此方法放在委托类中,这样就可以从任何类调用它。

- (void) hideTabBar:(UITabBarController *) tabbarcontroller {

int height = 480;

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];

for(UIView *view in tabbarcontroller.view.subviews) {
    if([view isKindOfClass:[UITabBar class]]) {
        [view setFrame:CGRectMake(view.frame.origin.x, height, view.frame.size.width, view.frame.size.height)];
    } 
    else {
        [view setFrame:CGRectMake(view.frame.origin.x,view.frame.origin.y, 320, 436)];
    }
}
[UIView commitAnimations];

}

- (void) showTabBar:(UITabBarController *) tabbarcontroller {

    int height = 480;

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.3]; 

    for(UIView *view in tabbarcontroller.view.subviews) {

        if([view isKindOfClass:[UITabBar class]]) {
            [view setFrame:CGRectMake(view.frame.origin.x, height, view.frame.size.width, view.frame.size.height)];            
        } 
        else {
            [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, height)];
        }
    }    

    [UIView commitAnimations];
}

答案 2 :(得分:0)

您需要设置tabBarController视图属性的底部子视图的框架,如下所示:

self.tabBarController.tabBar.hidden = YES;
UIView* subview = (UIView*)[self.tabBarController.view.subviews objectAtIndex:0];
imageView.frame = subview.frame = self.window.bounds;

这是我在一些生产中的产品中以某种形式使用的东西。您是否真的想要使用self.window.bounds取决于您当前的类是否具有指向UIWindow的mainWindow实例的窗口属性,是否支持多个方向(窗口的边界保持不变,无论当前UIInterfaceOrientation,视图控制器旋转,窗口没有)以及是否需要考虑状态栏。如果考虑状态栏(UIStatusBar),则偏移y& 20.将子视图转换为UIView允许您在这种情况下使用点语法(静态分析器无法分辨数组中的哪些对象)。

答案 3 :(得分:0)

我几个小时都在努力。最后我找到了解决方案。只需按照以下步骤操作:

  • 从故事板中勾选子视图控制器(要隐藏标签栏的那个)中的隐藏底部栏框。

  • 在根视图控制器的viewWillAppear方法中添加以下代码:self.tabBarController?.tabBar.hidden = false

  • 在推送的视图控制器的viewWillAppear方法中添加以下代码:self.tabBarController?.tabBar.hidden = true

这就是全部。它只是工作!