【问题标题】:iOS - UINavigationController, Hide navigationBariOS - UINavigationController,隐藏导航栏
【发布时间】:2014-09-17 09:35:02
【问题描述】:

我在隐藏 UINavigationController 的导航栏时遇到了一些小问题

我已添加:

self.navigation!.navigationBar.hidden = true

不幸的是,这会在白色状态栏后面留下某种背景(白色),将内容(绿色)向下推,以及不需要的滚动行为,我可以在其中上下拖动内容以显示/隐藏白色背景.我需要的是状态栏不占用任何垂直空间并位于内容之上(绿色)

我如何实现这一目标? 非常欢迎 swift 以及 obj-c 的答案

编辑: 我尝试了以下的各种版本,问题仍然存在-.-

override func loadView() {
    self.view = UIView(frame:UIScreen.mainScreen().bounds)
    self.view.backgroundColor = UIColor.whiteColor()


    self.navigation = UINavigationController(rootViewController: self.guideViewController!)

    self.navigation!.navigationBarHidden = true
    self.navigation!.setNavigationBarHidden(true, animated: true)

    self.view.addSubview(self.navigation!.view)
}

override func viewDidLoad() {
    self.automaticallyAdjustsScrollViewInsets = false
    self.navigation!.automaticallyAdjustsScrollViewInsets = false
}

编辑 2:

印刷:

UIApplication.sharedApplication().statusBarFrame.size.height

viewDidLoad 返回 20 后

【问题讨论】:

  • 什么“!” IN > self.navigation!.navigationBar.hidden = true ?
  • 它只是意味着解包一个可选值,一个在定义时没有设置的变量是可选的,需要在请求时解包
  • 你如何设置你的视图约束?
  • 编辑我的编辑以显示视图约束

标签: ios objective-c swift uinavigationbar


【解决方案1】:

更新:

只需在你的 ViewDidLoad 方法中添加这个

self.automaticallyAdjustsScrollViewInsets = NO;

【讨论】:

  • 我错误地认为问题出在我的 UINavigationController 中,经过一番查看后,我意识到问题出在我的一个推送视图中,在视图中添加自动调整滚动视图插件就可以了!谢谢 iBhavin
【解决方案2】:

你可以使用隐藏导航栏

[self.navigationController setNavigationBarHidden:YES];

隐藏状态栏

// Hide status bar iOS 7 or later
- (BOOL)prefersStatusBarHidden
{
    return YES;
}

【讨论】:

    【解决方案3】:

    看看这个网站:https://developer.xamarin.com/recipes/ios/content_controls/navigation_controller/make_the_nav_bar_disappear/

    该网站说“行为略有不同,具体取决于导航栏是不透明还是半透明”

    希望对您有所帮助。

    【讨论】:

      【解决方案4】:
      [self.navigationController setNavigationBarHidden:YES animated:animated];
      

      【讨论】:

        【解决方案5】:

        我知道这个问题已经得到解答,但我在隐藏导航栏然后在视图中使用 UIScrollView 时遇到了同样的问题。

        我以编程方式修复它:

        self.edgesForExtendedLayout = UIRectEdgeNone;
        

        或者在界面生成器中取消选择所有这些:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-26
          • 1970-01-01
          相关资源
          最近更新 更多