【发布时间】:2019-03-13 04:15:54
【问题描述】:
当用户滚动 50% 的 scrollView 内容时,我正在尝试记录一些事件。
我可以使用 scrollView.contentOffset.y 获取滚动量,如下所示:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
NSLog(@"%f",scrollView.contentOffset.y);
}
斯威夫特:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
print(scrollView.contentOffset.y)
}
当我向下滚动到 scrollView 的底部时,一旦我到达底部,我就可以知道 contentArea 的高度,假设值为 2000,我可以硬编码 1000 的值,因为我只在用户超过时才感兴趣整个 contentSize 的 50%。
但我希望它是动态的,因为 tableView 的 dataSource 将来可能会发生变化,这会导致 scrollView 的底部偏移量大于或小于 2000。
我想知道是否可以在滚动到底部之前检测到 tableView 的最大 contentOffset 值?
提前致谢。
【问题讨论】:
-
如果您使用的是非分段的 tableView,collectionView 可能会更好地检查 willDisplayCell 或 cellForRow 并检查 indexPath 是否“是”在您的对象中间以及单元格是否具有相同的高度。如果不是,并且您使用 UITableViewAutomatic Dimension,那么我认为不可能提前确切知道它。如果您知道单元格的高度,您可以通过计算得出。
-
根据您的问题,听起来您有动态大小的行/单元格,具有动态数据源,是吗?如果是这样,请从逻辑上考虑...您在问“如何在不渲染所有行的情况下获得所有可变大小行的总高度?”简单的回答:你不能,真的。您可以编写一个函数来遍历整个数据集并手动计算高度,但这可能适用于您的数据,也可能不适用。
-
是的,我会尝试有一个解决方法,如果我可以实现一个,我会在这里发表评论,谢谢大家。
-
UIScrollView 有一个名为“contentSize”的属性。 developer.apple.com/documentation/uikit/uiscrollview/… 您可以在填充表格视图后使用它来获取表格视图可以采用的总高度。建议您测试一次。
-
是的,这就是我需要的@kerry,非常感谢!
标签: ios objective-c swift uitableview uiscrollview