检测屏幕上的对象

时间:2016-10-14 00:32:48

标签: ios swift scroll uiscrollview uibutton

我有一个包含多个元素的滚动视图(标签,按钮......),当我滚动时,当屏幕上出现按钮时,我需要显示图像。

我可以检测到屏幕上出现按钮的时间如下:

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) {
    ...
}

}

但是我希望滚动后出现在屏幕上的所有按钮(可能带有标签的数组)。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

如果所有按钮都在数组中,则使用NSSet,滚动按钮使用NSMutableSet。

因此,在滚动之前,请执行以下操作:

NSMutableSet *scrolledButtons = [[NSMutableSet alloc] init];

当他们滚动时,添加它们:

[scrolledButtons addObject:aButton];

完成后,只需检查一下:

NSSet *allMyButtons = [NSSet setWithArray:self.myArrayOfButtons];
if ([allMyButtons equalToSet:scrolledButtons]) {
    // whatever
}

对于在Obj-C中做到这一点道歉...我的Swift不太适合鼻烟,而且我很快就这样做了。