【问题标题】:Why does my Navigation Bar temporarily disappear when I dismiss a modal view in iOS 7?为什么我在 iOS 7 中关闭模式视图时导航栏会暂时消失?
【发布时间】:2014-04-07 16:53:39
【问题描述】:

当我从模态视图控制器返回到主视图控制器(我有一个水平动画)时,我的主控制器导航栏将自身放置得有点太高了,很快就会跳回正确的位置。有人知道为什么吗?我一直在谷歌搜索,但没有成功。

应用代理:

 [navigationController.navigationBar setBarTintColor: [UIColor whiteColor]];
 [navigationController.navigationBar setTranslucent: NO];

当我按下按钮打开我的信息视图时:

UIViewController *infoViewController;
infoViewController = [[InfoViewController alloc] initWithNibName:@"InfoViewController" bundle: nil];
infoViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController: infoViewController animated: YES completion:nil];

我没有在任何 xib 文件上使用自动布局。我的主视图控制器 xib 文件为空,状态栏:默认。我的信息视图控制器 xib 文件中有一些东西。

关闭模态视图控制器的代码:

-(IBAction)onBackBtnClick:(id)sender
{
    [self dismissModalViewControllerAnimated: YES];
}

【问题讨论】:

  • 您是否随时调用 [[UIApplication sharedApplication] setStatusBarHidden:YES/NO]?
  • 不! :/这就是为什么我很困惑
  • 我们需要更多的上下文。贴一些代码。你如何解雇视图控制器?你在使用自动布局吗?如果是这样,您的限制是什么?
  • 我在模态新视图时遇到了同样的问题。
  • 如果你解决了问题请告诉我!

标签: objective-c uinavigationbar ios7


【解决方案1】:

您所要做的就是在“InfoViewController”viewController类的ViewWillAppear中添加以下代码

-(void) viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];

    [self.navigationController.navigationBar setTranslucent:NO];
    [self.navigationController.navigationBar.layer removeAllAnimations];
}

希望它对你有用:)

【讨论】:

    【解决方案2】:

    问题好像是

    infoViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    

    如果你把它改成

    infoViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
    

    那么它就不会再跳了。这对我有用。祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-28
      • 2020-10-11
      • 2018-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多