当用户在表格视图中向下滚动时隐藏视图
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】:您的tableView
的delegate
应该实现UIScrollViewDelegate
方法scrollViewDidScroll:
并查询scrollView
(您的tableView)上的contentOffset.y
属性。然后,这取决于您希望栏何时出现:仅在顶部,或者在用户在 tableView 内向上滚动时。您可以将contentOffset.y
差异与filterBar
s 顶部约束的常量(范围从-44 到0)同步。插入 tableView 并更新该插入可能会更好(从 0 到 44)。
如果您的 filterBar 可以使用来自 UINavigationController
的导航栏来实现,您可能只需使用 navigationController?.hidesBarsOnSwipe = true
,但我不知道您的视图控制器设置。
【讨论】:
以上是关于当用户在表格视图中向下滚动时隐藏视图的主要内容,如果未能解决你的问题,请参考以下文章