【发布时间】:2017-02-23 07:04:07
【问题描述】:
我有一个包含多个元素(标签、按钮...)的滚动视图,当我滚动时屏幕上出现按钮时,我需要显示图像。
我可以像这样检测按钮何时出现在屏幕上:
func scrollViewDidScroll(scrollView: UIScrollView) {
let offset = self.scrollView.contentOffset
let onScreen = CGRectOffset(self.scrollView.frame, offset.x, offset.y)
if CGRectIntersectsRect(onScreen, self.button.frame) {
...
}
}
但我想获取滚动后出现在屏幕上的所有按钮(可能带有标签的数组)。
我该怎么做?
【问题讨论】:
-
你正在做的将工作,那么有什么问题?如果需要,您可以创建一个包含所有视图的数组,就像您说的那样。
-
我将所有按钮添加到来自 http 请求的代码中。我为每个按钮标签设置了一些 ID。这是 ID = ID 图像。如果您在停止滚动时浏览所有按钮,它将很长。
-
一种可能的优化是将所有按钮添加到可以直接访问的数组中,而不必通过标签查找它们。您还可以通过仅将按钮的框架原点与滚动视图的内容偏移量进行比较来更快地检查可见性,因为您并不真正关心完整的交叉点。除此之外,您没有提供足够的信息让我们能够提供任何其他有用的优化。
-
不,我认为从屏幕上获取所有按钮的标签会更慢。
标签: ios swift scroll uiscrollview uibutton