我已经成功实现了一个搜索栏,现在我想向下滑动tableview显示搜索栏,再次向下滑动,隐藏搜索栏。我应该使用什么样的方法?谢谢Swift自动隐藏/在桌面顶部显示搜索栏
1
A
回答
4
一个UITableView
是具有委托(从UIScrollViewDelegate)方法UIScrollView
一个子类,你可以用它来找出何时滚动已经开始和结束。
您可以使用scrollViewDidScroll(_:)
方法在用户开始滚动时收到通知,并且在滚动结束时通知scrollViewDidEndDecelerating(_:)
。
从你的问题,我假设你已经有一个方法来显示/隐藏搜索栏;你只是在寻找“何时”来拨打你的showSearchBar
或hideSearchBar
方法。
您可以使用Bool
属性来存储searchBar
是否隐藏,并相应地调用您的方法。
let searchBarIsHidden = true
override func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
if searchBarIsHidden {
showSearchBar() //your show search bar function
} else {
hideSearchBar() //your hide search bar function
}
}
现在,你应该确保你在你的showSearchBar
和hideSearchBar
1
美丽隐藏月底更新的searchBarIsHidden
价值,并显示了使用搜索栏的顶部约束斯威夫特:
var lastContentOffset:CGFloat = 0
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let bottomOffset = scrollView.contentSize.height - scrollView.bounds.height
guard scrollView.contentOffset.y < bottomOffset else {
return
}
guard scrollView.contentOffset.y > 0 else {
searchBarTopConstraint.constant = 0
return
}
let offsetDiff = scrollView.contentOffset.y - lastContentOffset
let unsafeNewConstant = searchBarTopConstraint.constant + (offsetDiff > 0 ? -abs(offsetDiff) : abs(offsetDiff))
let minConstant:CGFloat = -searchBar.frame.height
let maxConstant:CGFloat = 0
searchBarTopConstraint.constant = max(minConstant, min(maxConstant, unsafeNewConstant))
lastContentOffset = scrollView.contentOffset.y
}
相关问题
- 1. 在桌面顶部锁定搜索栏
- 2. 如何在页面顶部滚动并隐藏边栏时显示边栏?
- 3. 搜索视图始终显示在桌面上顶部
- 4. 如何隐藏大型桌面的基础顶部栏?
- 5. 自动隐藏/自动显示界面
- 6. 顶部的滑动菜单隐藏在Safari移动栏后面
- 7. 如何将搜索栏移到顶部而不隐藏它?
- 8. ViewController中的顶部栏ios swift显示前一个顶部栏
- 9. 向下滚动时隐藏顶部栏
- 10. iOS:在导航栏中显示搜索栏时隐藏示波器栏
- 11. 从顶部(如下拉)隐藏的动画桌面视图
- 12. 搜索栏结果不会显示在桌面视图中
- 13. 隐藏或显示桌面视图
- 14. 完全隐藏搜索栏
- 15. UISearchController隐藏搜索栏
- 16. 隐藏UITableView搜索栏
- 17. 状态栏出现在桌面顶部
- 18. jqGrid搜索框显示在顶部
- 19. 顶部通知栏显示和隐藏效果很好
- 20. C#隐藏并显示在分离容器顶部的面板
- 21. 隐藏顶部面板
- 22. 显示在桌面上的按钮/链接移动隐藏
- 23. UITableViewController隐藏导航栏[搜索栏]
- 24. 在桌面视图顶部显示下方显示
- 25. (jQuery的)搜索过滤器栏显示和隐藏
- 26. 搜索显示控制器如何隐藏导航栏?
- 27. 更改tableView的框架以显示和隐藏搜索栏
- 28. 按下按钮隐藏/显示搜索栏
- 29. Devexpress GridView显示/隐藏搜索栏(ctrl + f)按钮
- 30. 从搜索中隐藏/显示searchDisplayController导航栏按钮
谢谢您。它像一个魅力! :) – Igy