iphone开发:如何检查手机屏幕上是否有物体

时间:2012-09-03 14:33:26

标签: iphone objective-c ios uiimageview scrollview

在我的应用程序中,我有一个scrollview,它有一些像imageview,一个按钮等对象,我的scrollview有一个巨大的内容,所以我需要垂直或水平滚动来探索它。我的问题是如何检查对象是否位于手机屏幕上的可见位置?

编辑:我想检测图像是否完全在scrollView的框架中。但是,即使有一个小的交叉点,CGRectIntersectsRect(bottomScroller.bounds, selectImage_1.frame)也会返回true。

2 个答案:

答案 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} }。