UITableView headerView 滚动偏移
Posted
技术标签:
【中文标题】UITableView headerView 滚动偏移【英文标题】:UITableView headerView scroll offset 【发布时间】:2014-05-15 00:51:27 【问题描述】:我遇到了UITableView
的问题,它是tableHeaderView
的属性。
我想让tableHeaderView
表现得像UISearchBar
,即内容偏移量应该是tableHeaderView 的。
当表格视图无法填充视图的框架时,设置 contentOffset 等没有帮助。
这是当前行为的截图:
(来源:tubtub.de)
以及我希望它如何:
(来源:tubtub.de)
我在viewDidLoad
中插入headerView
,如下所示:
- (void)viewDidLoad
[super viewDidLoad];
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
headerView.backgroundColor = [UIColor redColor];
self.tableView.tableHeaderView = headerView;
非常感谢任何帮助或提示。谢谢!
编辑:我通过使用 UIScrollViewDelegate 和子类化 UITableView 使其工作。查看提供的github repo。
【问题讨论】:
【参考方案1】:您可以通过 headerView 高度使用 setContentOffset:。 这个 contentOffset 只会在你有足够数量的数据被你的 headerView 高度关闭时才会发生。即)如果 tableView 不可滚动,因为您的屏幕截图中只有很少的数据,那么 headerView 仍然可见。但是,如果您有大量无法在屏幕上显示的数据,则会有 contentOffset。
试试这个 20 行。你会明白我的意思。
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
headerView.backgroundColor = [UIColor redColor];
self.tableView.tableHeaderView = headerView;
[self.tableView setContentOffset:CGPointMake(0, 44)];
只有 3 行,此 contentOffset 将不起作用,并且在您的情况下这可能是您想要的行为,因为当您有额外的空间可以显示时,您不想隐藏 searchBar。
【讨论】:
无论表格显示多少数据,我都希望始终应用 contentOffset。我可能正试图破解我的方式......【参考方案2】:我想出了实施自己的解决方案。
我利用UIScrollViewDelegate
并提出UITableView
的子类来动态计算contentSize
。
看看github repo here。
【讨论】:
【参考方案3】:我会仔细检查表格本身的框架。通过将 headerView 的框架设置为从 0,0 开始,您可以指定它的原点应位于为表格指定的视图的左上角。
【讨论】:
以上是关于UITableView headerView 滚动偏移的主要内容,如果未能解决你的问题,请参考以下文章
iOS UITableview 在有 HeaderView的时候滚动到顶部
iOS UITableview 在有 HeaderView的时候滚动到顶部
如何在UICollectionView中添加HeaderView,如UITableView的tableHeaderView
带有 uisearchDisplayController 的 UItableView 在 ios 7 中滚动时更改了 contentoffset