【问题标题】:completely show/hide tabbar controller and use the space完全显示/隐藏标签栏控制器并使用空间
【发布时间】:2012-02-16 10:45:25
【问题描述】:

我试图隐藏标签栏控制器并显示 uiimageview 类似于它在 iphone 的本机照片库中的完成方式。我已经创建了库,但是通过隐藏标签栏在下一个视图中显示图像时遇到问题。我可以隐藏标签栏,但是当我尝试添加 uiimageview 时,它不会占用标签栏占用的空间。我希望我的 uiimageview 拉伸到屏幕底部。 我什至想在那个空白处添加一个按钮,但我做不到。

我隐藏标签栏的代码:

 self.tabBarController.tabBar.hidden = YES;

有人能帮帮我吗?

谢谢
潘卡伊

【问题讨论】:

  • 你有什么解决办法吗?

标签: iphone ios uiimageview uitabbarcontroller


【解决方案1】:

试试这个

self.tabBarController.tabBar.hidden = YES;

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

【讨论】:

  • 我已经尝试过很多次了,但是还是不行。
【解决方案2】:

只需使用以下两种方法来隐藏或显示标签栏控制器。将此方法放在委托类中,以便从任何类中调用。

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

【讨论】:

  • 是否应该硬编码高度,考虑不同的外形尺寸?也许'int height = [[UIScreen mainScreen] bounds].size.height;' ?
【解决方案3】:

你需要设置tabBarController的view属性底部子view的frame,像这样:

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实例的window属性,你是否支持多个方向(不管当前的@987654325如何,window的边界都保持不变@,视图控制器旋转,窗口不旋转)以及是否需要考虑状态栏。如果考虑到状态栏 (UIStatusBar),请将 y 和高度偏移 20。将子视图转换为 UIView 允许您在这种情况下使用点语法(静态分析器无法判断哪些对象在数组中)。

【讨论】:

    【解决方案4】:

    我已经为此苦苦挣扎了好几个小时。最后我找到了解决方案。只需按照以下步骤操作:

    • 在 Storyboard 的子视图控制器(您要隐藏标签栏的那个)中勾选 Hide Bottom Bar on Push 框。

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

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

    就是这样。它只是工作!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-13
      • 2018-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多