我在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/