我在UIScrollView内有一个UIImageView,另外一个UIImageView(dragImage)在滚动视图之外,但在主视图控制器的UIScrollVIew视图内。

我想检查一下dragImage是否与scrollview内的imageview相交,并且还想知道相交了多少。

有什么好的方法?

这是我的结果/代码,效果很好:

CGRect tabFrame = CGRectMake(0, ((TAB_HEIGHT+2)*i) + scrollView.frame.origin.y, TAB_WIDTH, TAB_HEIGHT);
            CGRect dragFrame = dragImage.frame;

            CGRect collision = CGRectIntersection(dragFrame,tabFrame);

            int area = collision.size.width * collision.size.height;

            if (area>selectedArea) {
                selectedArea = area;
                selectedTab=i;
            }


            if (selectedArea>600) break;

最佳答案

您将要使用CGRectIntersectsRect()CGRectIntersection()分别得出两个矩形是否重叠以及重叠多少。例如...

BOOL dragImageIntersectsScrollView = CGRectIntersectsRect(dragImage.frame, scrollView.frame);
CGRect intersectionRect = CGRectIntersection(dragImage.frame, scrollView.frame);

if (!dragImageIntersectsScrollView)
{
    NSLog(@"Rectangles do not intersect");
}
else
{
    NSLog(@"Intersection rect: %@", NSStringFromCGRect(intersectionRect))
}


CGRectIntersectsRect()不是绝对必要的,因为您可以检查CGRectIntersection()的返回值。如果它们不相交,则它将返回一个空矩形。您可以使用CGRectIsNull()进行检查。

关于objective-c - iPhone:CGRectInterest, HitTest ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8824052/

10-11 17:22