【问题标题】:White space in place of a hidden tab bar空白代替隐藏的标签栏
【发布时间】:2012-02-26 01:09:30
【问题描述】:

我在UITabBarController 中使用UINavigationController,而我的导航控制器中的屏幕之一是UIImageView。当我想全屏显示该图像时,我必须隐藏导航栏和标签栏。我能够正确隐藏导航栏,但是当我隐藏标签栏时,它会留下 50px 的空白。有什么建议吗?

【问题讨论】:

  • 独立样本有助于了解正在发生的事情。尝试编辑您的问题。谢谢。
  • 从 iOS 8 开始,所有的“will-rotation-functions”都被弃用了。 [所以现在我的解决方案来处理这个问题。][1] [1]:stackoverflow.com/a/29772254/2242687

标签: ios uinavigationcontroller uitabbarcontroller uinavigationbar uitabbar


【解决方案1】:

我通过改变约束解决了这个问题。

我的标签栏 viewController 中有一个视图,它的底部约束是从 Safe Area.bootom 给出的 (=0)。这导致底部出现空白。将此约束从 Superview.bottom 更改为 (=0) 解决了我的问题。

【讨论】:

    【解决方案2】:

    距离最初的帖子已经有很长时间了,但我想我可以加入并添加我的想法。

    另一个选项是直接在 Storyboard 中设置选项 Hide bottom bar on push,用于在标签栏控制器内的导航控制器内推送的所有控制器。这也适用于 3.5" 和 4" 的 iOS7 模拟器/目标。

    【讨论】:

      【解决方案3】:

      谢谢大家 我找到了解决问题的最佳方法。

      MyImageViewController.hidesBottomBarWhenPushed = YES ;
      [self.navigationController pushViewController:MyImageViewController animated:YES];
      

      它给了我想要的回应。 谢谢你的分享

      【讨论】:

        【解决方案4】:

        经过数小时的研究,这个帖子解决了我隐藏标签栏时的空白问题:hiding TabBar when rotating iPhone device to landscape

        【讨论】:

          【解决方案5】:

          我认为您可以在模型视图控制器上显示它。 将 modelviewcontroller 放在 tabbarcontroller 上。

          FullImageView*objFullImageView = [[FullImageView alloc] initWithNibName:@"FullImageView" bundle:nil];
          objFullImageView.image = OriginalImage;
          UINavigationController *tempNav = [[[UINavigationController alloc] initWithRootViewController:objFullImageView] autorelease];
          [objFullImageView release];
          self.tabBarCtrl.modalPresentationStyle = UIModalPresentationPageSheet;
          [self.tabBarCtrl presentModalViewController:tempNav animated:YES];
          

          FullImageView.h

          {  
              UIImage *image;
          }
          @property(nonatomic, retain) UIImage *image;
          

          FullImageView.m

          @synthesize image;
          
          viewDidLoad /ViewWillApper
          {
              //Set image in your UIImageView    
          }
          

          【讨论】:

          • 你必须创建一个新类。然后创建该类的对象并将该对象显示为模型视图控制器。我已经编辑了我的答案。
          • 而且您不需要隐藏导航控制器和标签栏。
          【解决方案6】:

          您可以增加图像视图框架的高度。

          【讨论】:

          • 我已经这样做了,但它什么也没做。问题依然存在。