一尘不染

iOS中的静态/固定导航栏

swift

我的应用程序内部有一个导航控制器和一个集合视图。
有一个问题:我在导航栏中使用大标题,因此其中的
所有内容都不是静态的。当我滚动集合视图单元格时,
标题(我在 导航栏中随意移动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)
}

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


阅读 241

收藏
2020-07-07

共1个答案

一尘不染

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

使用情节提要/ Xib:

考虑下面的图像,其中在tableView和button中添加了和
scene。此处的navigation bar滚动会折叠,tableView
因为的层次结构tableView中viewController的第一个视图是
containerView附加到导航栏的。

在此处输入图片说明

现在,让导航栏固定的,如果我们只是改变的顺序tableView和button下面,将禁用的崩溃navigation bar。

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

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

以编程方式:

如果要以编程方式设置视图,则只需要在顶部添加一个占位符视图,或者tableView/collection在添加其他
视图之后添加即可。

例如,

self.view.addSubview(UIView(frame: .zero))
self.view.addSubview(tableView) // or collectionView
2020-07-07