【问题标题】:Static/fixed Navigation Bar in iOSiOS中的静态/固定导航栏
【发布时间】:2018-12-31 09:10:30
【问题描述】:

我的应用程序中有一个导航控制器和一个集合视图。还有一个问题:我在导航栏中使用大标题,所以里面的一切都不是静态的。当我滚动集合视图单元格时,标题(我使用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)
}

但它只适用于大标题。那么如何让导航栏变大呢?

【问题讨论】:

    标签: ios swift uinavigationcontroller


    【解决方案1】:

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

    使用 Storyboard/Xib:

    考虑下图,其中scene 中添加了tableViewbutton。这里navigation bar 将在tableView 滚动时折叠,因为tableViewviewControllercontainerView 层次结构中附加到导航栏的第一个视图。

    现在固定导航栏,如果我们只是改变tableViewbutton的顺序如下,它将禁用navigation bar的折叠。

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

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

    以编程方式:

    如果您以编程方式设置视图,则只需在顶部添加占位符视图或在添加其他视图后添加 tableView/collection

    例如,

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

    【讨论】:

    猜你喜欢
    • 2015-05-13
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多