在我的应用程序中,我有一个scrollview,它有一些像imageview,一个按钮等对象,我的scrollview有一个巨大的内容,所以我需要垂直或水平滚动来探索它。我的问题是如何检查对象是否位于手机屏幕上的可见位置?
编辑:我想检测图像是否完全在scrollView的框架中。但是,即使有一个小的交叉点,CGRectIntersectsRect(bottomScroller.bounds, selectImage_1.frame)
也会返回true。
答案 0 :(得分:4)
将对象(图像视图,按钮等)框架与scrollView.bounds
:
if (CGRectIntersectsRect(scrollView.bounds, object.frame)) ...
编辑:
如果要确保完全显示对象,请计算交点并将其与对象的框架进行比较:
CGRectEqualToRect(
CGRectIntersection(scrollView.bounds, object.frame),
object.frame);
虽然您可能会找到一种优化的方法来进行检查。
答案 1 :(得分:2)
如其他答案中所述,您将需要使用CGRectIntersectsRect
,因为只有当您的对象与滚动视图的可见帧交叉时才会输出。但是,为了使其更加完整,您应该使用UIScrollViewDelegate's
方法scrollViewDidScroll
,这将允许您在滚动发生时或多或少地要求交叉点。这是一个例子:
·H
<UIScrollViewDelegate>
的.m
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (CGRectIntersectsRect(mySubView.frame, scrollView.bounds)) {
CGRect intersection = CGRectIntersection(mySubView.frame, scrollView.bounds);
NSLog(@"%@",NSStringFromCGRect(intersection));
}
}
编辑:然后使用CGRectIntersectsRect
您可以询问特定的路口,此时您需要做的就是根据您的需要做出这样的事情,请写{{1} }。