kri*_*isk 9 iphone uitableview uisearchbar ios
我想在iPhone Contacts应用程序中复制搜索栏的粘滞行为.

当用户向下滚动视图时,搜索栏也会随视图一起下降:

如果用户向上滚动,则表格会相应滚动,具有以下两种行为:
(1)搜索栏保持固定在顶部,
(2)后续部分标题在搜索栏下方适当停止:

当下一个标题标题出现时,前一个标题会在搜索栏下方消失:

注意:部分索引控件(右侧的az)也出现在搜索栏的顶部.因此,摆弄contentInset将会推动部分索引控制随之而来.
我创建了一个自定义UIViewController,添加了一个UITableView,将其设置contentInset为搜索栏的高度.我创建了一个UIView,将搜索栏添加为子视图,然后将其添加UIView到UITableView.然而,如上所述,当用户滚动时,区段标题仍然保持在y位置零,而不是标题高度.另外,部分标题索引控制位置受到不利影响.
我很欣赏这个问题的解决方案.
Fab*_*ser 15
完成所有事情已经做了相当多的工作,但我必须证明重建这种行为是可能的,至少差不多.
看看我创建的这个GitHub项目:https://github.com/fabiankr/TableViewSearchBar
实际上,它甚至不复杂:
1)将搜索栏直接添加到表格视图并设置tableView的contentInset
2)在-scrollViewDidScroll:调整搜索栏的框架中
但是,您需要注意一些注意事项:
1)当将表格视图滚动到顶部时,部分标题会很快出现在搜索栏上方.为了解决这个问题,zPosition在滚动到顶部时设置搜索栏
2)您的内容控制器需要是一个子类UIViewController而不是UITableViewController,因为UISearchDisplayController将调光视图添加到控制器的视图中.因为表视图控制器view是表视图,所以当滚动表视图时,调光视图将处于错误的位置.
仅使用公共API是不可能的一件事是使表右侧的节索引控件与搜索栏重叠.这只是一个小问题,即使没有它,其行为也非常类似于联系人应用程序中的行为.
为了实现完全相同的行为,您必须使用私有API.有一个需要使用的被UITableView调用方法_setPinsTableHeaderView:.示例项目包含以下两者的实现:1)仅公共API和2)私有API,以使段索引控件与搜索栏重叠.
提醒:当您计划将应用程序提交到App Store时,不应使用私有API!
| 归档时间: |
|
| 查看次数: |
8311 次 |
| 最近记录: |