当用户在表格视图中向下滚动时隐藏视图

Posted

技术标签:

【中文标题】当用户在表格视图中向下滚动时隐藏视图【英文标题】:Hide view when user scrolls down in tableview 【发布时间】:2017-01-17 20:31:56 【问题描述】:

我有一个过滤栏,它是一个 UIView 以及我的控制器中的一个 tableView,如下所示:

override func viewWillLayoutSubviews() 
    sortSalonsByDistanceAndReload()
    

func setupViews() 
    view.addSubview(filterBar)
    view.addSubview(tableView)

    filterBar.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
    filterBar.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
    filterBar.topAnchor.constraint(equalTo: view.topAnchor).isActive = true

    filterBarHeightLC = filterBar.heightAnchor.constraint(equalToConstant: 44)
    filterBarHeightLC?.isActive = true

    tableView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
    tableView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
    tableView.topAnchor.constraint(equalTo: filterBar.bottomAnchor).isActive = true
    tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true


我想让filterBar在用户向下滚动tableView时消失,然后在用户向上滚动时重新出现

【问题讨论】:

【参考方案1】:

您可以使用搜索控制器。看看How to implement UISearchController in UITableView - SWIFT

如果它不适合你,你可以添加为标题视图的一部分或部分

【讨论】:

【参考方案2】:

您的tableViewdelegate 应该实现UIScrollViewDelegate 方法scrollViewDidScroll: 并查询scrollView(您的tableView)上的contentOffset.y 属性。然后,这取决于您希望栏何时出现:仅在顶部,或者在用户在 tableView 内向上滚动时。您可以将contentOffset.y 差异与filterBars 顶部约束的常量(范围从-44 到0)同步。插入 tableView 并更新该插入可能会更好(从 0 到 44)。 如果您的 filterBar 可以使用来自 UINavigationController 的导航栏来实现,您可能只需使用 navigationController?.hidesBarsOnSwipe = true,但我不知道您的视图控制器设置。

【讨论】:

以上是关于当用户在表格视图中向下滚动时隐藏视图的主要内容,如果未能解决你的问题,请参考以下文章

隐藏表格视图上方的视图

向下滚动以逐渐隐藏菜单栏或视图并向上滚动

我设置滚动视图偏移以显示被键盘隐藏的文本字段。如果用户在显示键盘时滚动,则滚动视图会向下捕捉

当 UITableView 开始滚动时,动画视图

当用户向下滚动后向上滚动时,如何在表格视图中显示搜索框?

当用户触摸 uiscrollview 时隐藏表格