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

我可以检测到按钮何时出现在屏幕上,如下所示:

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


}

但是我想让所有按钮(也许在带有标签的数组中)滚动后出现在屏幕上。

我怎样才能做到这一点?

最佳答案

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

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

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


随着它们的滚动,添加它们:

[scrolledButtons addObject:aButton];


然后,完成后,只需进行检查:

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


并为在Obj-C中执行此操作而道歉...我的Swift尚无法完全解决,我正在迅速进行。

关于ios - 在屏幕上检测物体,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40033145/

10-10 20:37