iOS中的静态/固定导航栏

时间:2018-07-23 20:36:06

标签: ios swift uinavigationcontroller

我的应用程序下有一个导航控制器和一个集合视图。有一个问题:我在导航栏中使用大标题,因此里面的所有内容都不是静态的。当我滚动集合视图单元格时,标题(我使用UILabel()手动创建了它,以在导航栏中随意移动它)和按钮向上移动,导航栏采用iOS 10导航栏的形式,它的高度。您可以在这里看到它:

我的导航栏的正常状态为“喜欢大标题”打开:

当我滚动“收藏夹视图”时,一切都会发生:

问题很简单:如何使导航栏的力保持恒定的高度?我希望它即使在滚动时也能固定。有什么想法吗?有可能吗?

第二个问题,如果第一个是不可能的:解决我的问题的另一种方法是使“优先选择大标题”的导航栏变大。我尝试了这段代码:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    let height: CGFloat = 50 //whatever height you want to add to the existing height
    let bounds = self.navigationController!.navigationBar.bounds
    self.navigationController?.navigationBar.frame = CGRect(x: 0, y: 0, width: bounds.width, height: bounds.height + height)
}

,但仅适用于大标题。那么如何使导航栏更大?

1 个答案:

答案 0 :(得分:3)

是的,您可以将其修复。如果视图层次结构中的第一个视图不是CollectionView/TableView (ScrollView),它将不会滚动。

请考虑以下图像,其中在tableView中添加了buttonscene。这里的navigation bar将在tableView的滚动上折叠,因为tableViewviewController的{​​{1}}层次结构中附加到导航栏的第一张视图。

enter image description here

现在要固定导航栏,如果我们仅按以下方式更改containerViewtableView的顺序,它将禁用button的折叠。

enter image description here

要更改navigation bar的顺序,必须单击,按住并向上/向下移动。

如果此场景中只有view,则可以在顶部添加占位符CollectionView,并将其view设置为height,如下所示,

enter image description here