繁体   English   中英

CGRect与4个矩形相交。 如何找出它主要与哪个矩形相交?

[英]CGRect intersects 4 rects. How to figure out which rect it intersects mostly?

如果您需要更多详细信息:我有可拖动的UICollectionViewCell。 当单元在拖动过程中与其他单元重叠时,我想知道它最重叠的是哪个单元,以便用此单元替换重叠的单元。 有什么有效的方法可以做到这一点吗? 我发现CGGeometry没有任何帮助。 谢谢。

使用CGRectIntersection(r1,r2)查找交点rect(如果有)。 将返回的矩形的宽度和高度相乘得到面积。 比较这四个区域以找到最大的区域。

对于UI操作而言,这应该足够快。

您可以在循环中使用CGRectUnion(),面积最小的那个将是重叠最大的那个。 您可以编写一个处理(并返回)CGRects的函数,但是您可能需要再次遍历视图(单元格)以找到正确的视图,因此我将其保持在UIView级别...例如

    //helpers

    CGFloat CGRectGetArea(CGRect theRect){
    return theRect.size.width * theRect.size.height;
    }

 -(UIView *)viewClosestToView:(UIView*)keyView fromViews:(NSArray*)comparisonViews{

  UIView *result=nil;
  CGFloat smallestArea=0.0;

   for (UIView *view in comparisonViews){

    CGFloat area = CGRectGetArea( CGRectUnion(view.frame, keyView.frame)  );

    if ((area < smallestArea)|| ((NSInteger)smallestArea==0) ){
    smallestArea=area;
    result=view;
    }

  }
return result;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM