【问题标题】:Content behind custom UINavigationBar?自定义 UINavigationBar 背后的内容?
【发布时间】:2015-05-07 10:12:50
【问题描述】:

我创建了一个 UINavigationController 和一个 UIViewController。使用此设置,视图如下所示:

这就是我想要的。内容“测试文本”不会出现在状态栏后面。

现在我在 UIViewControllers 中创建了自己的 UINavigationBar:

override func viewWillAppear(animated: Bool) {
   super.viewWillAppear(animated)
   self.navigationController?.setNavigationBarHidden(true, animated: false)

   let newNavBar:UINavigationBar = UINavigationBar(frame: CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), 64))
   newNavBar.tintColor = UIColor.whiteColor()
   newNavBar.translucent = true
   self.view.addSubview(newNavBar)
}

结果如下:

内容位于新导航栏的后面。

如何防止内容出现在新导航栏后面?

【问题讨论】:

    标签: ios objective-c swift uinavigationcontroller uinavigationbar


    【解决方案1】:

    当您在视图控制器中添加导航栏时,导航栏将占用 64 像素(20 像素状态栏和 44 像素导航栏),因此您需要在距离顶部 64 像素后开始布局。

    【讨论】:

    • 但我希望内容在导航栏下滚动。
    • 我想这是不可能的,但你可以把你的代码放在滚动视图中,默认情况下滚动它
    • 我该怎么做?为什么不可能,因为它与原始导航栏配合得很好?
    【解决方案2】:

    如果您的内容是UIScrollView,请使用contentInsets 属性来调整您的内容开始的位置,这使得滚动视图能够滚动指定数量的像素“太远”,从而立即在下方显示您的内容你的自定义UINavigationBar

    如果您的内容不是UIScrollview,则只需使用约束偏移内容(您可以将其链接到IBOutlet,因此如果您从旧的动态更改为新的UINavigationBar,则可以更改它)。

    【讨论】:

      猜你喜欢
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多