【问题标题】:UINavigationBar disappears iOS7UINavigationBar 消失 iOS7
【发布时间】:2014-01-13 10:46:48
【问题描述】:

我对 UINavigationBar 有一些奇怪的错误。

有时它会消失(实际上如果您将视图移动到屏幕的一半,然后释放它)

Video example

在我调用的第一个 ViewController 的 viewWillAppear: 方法中:

[self.navigationController setNavigationBarHidden:NO animated:YES];

第二个 ViewController 的 viewWillAppear: 包含:

[self.navigationController setNavigationBarHidden:YES animated:NO];

我尝试更改animated: 参数,但没有帮助。

是 iOS7 的 bug 还是我做错了什么?

【问题讨论】:

  • 你试过self.navigationcontroller.navigationbarhidden = NO;吗?或者你有没有导航栏的xib?将 xib 文件导航栏类型设置为半透明导航栏。而不是尝试分析导航栏隐藏语句。
  • @NarasimhaiahKolli 是的,我试过了。与 [self.navigationController setNavigationBarHidden:NO animated:NO] 相同。
  • @NarasimhaiahKolli 我只有第一个 ViewController 的 xib
  • 您必须将透明导航栏添加到 viewcontroller xib。只需转到 xib 的检查器属性并将导航栏添加到 xib。
  • @NarasimhaiahKolli 没有任何改变。导航栏仍然消失

标签: ios7 uinavigationcontroller uinavigationbar viewwillappear


【解决方案1】:

我找到了原因。 这是因为在info.plist

View controller-based status bar appearance 等于 YES

如果改成NO就好了

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,并解决了它。解决办法是:

    1. 修改info.plist,将“View controller-based status bar appearance”设置为NO;

    2. 全部删除 - (UIStatusBarStyle)preferredStatusBarStyle {} ;

    3. 如果您的视图控制器有不同的状态栏样式,请使用 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

      例如在 viewWillAppear 中设置为浅色,在消失中设置为深色样式。

    【讨论】:

      【解决方案3】:

      您应该为每个导航控制器定义外观。 如果您只想在第二个控制器上有一个导航栏,您应该在该特定控制器中执行以下操作:

      - (void)viewWillAppear:(BOOL)animated
      {
          [super viewWillAppear:animated];
          [self.navigationController setNavigationBarHidden:NO animated:YES];
      }
      
      - (void)viewWillDisappear:(BOOL)animated
      {
          [super viewWillDisappear:animated];
          [self.navigationController setNavigationBarHidden:YES animated:YES];
      }
      

      如果您需要更改控制器的顺序,它会起作用。

      【讨论】:

      • 在这种情况下,导航栏会在隐藏 ViewController 之前消失,并且顶部有黑色空间。
      • 检查动画标志是否设置为YES。如果我将其设置为NO,我会看到与您描述的完全相同的内容。
      • 如果我在第二个控制器的 viewWillDisappear 中 setNavigationBarHidden 它与 gif 上的相同。如果我在第二个的 viewWillDisappear 和第一个的 viewWillAppear 中设置它,我有黑色空间。类似的东西
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-26
      • 2011-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多