Objective c 从CGRect中减去CGRect——其中一个最大的部分不包含另一个
如何将一个Objective c 从CGRect中减去CGRect——其中一个最大的部分不包含另一个,objective-c,geometry,core-graphics,cgrect,Objective C,Geometry,Core Graphics,Cgrect,如何将一个CGRect从另一个中减去?我希望结果R1-R2是R1中不与R2相交的最大子矩形 示例1: +----------------------------------+ | +--------+ | | | R2 | | | | | | | +--------+ R1 | |
CGRect
从另一个中减去?我希望结果R1-R2
是R1中不与R2相交的最大子矩形
示例1:
+----------------------------------+
| +--------+ |
| | R2 | |
| | | |
| +--------+ R1 |
| |
| |
| |
+----------------------------------+
+-----------------------+----------+
| | |
| | R2 |
| | |
| R1 +----------+
| |
| |
| |
+----------------------------------+
+----------------------------------+
| |
| |
| |
| R1 |
| +---------+ |
| | | |
| | R2 | |
+---------+---------+--------------+
+----------------------------------+
| +--------+ |
|| R2 ||
| | | |
|+----------+R1|
| |
| |
| |
+----------------------------------+
R3=CGRectSubstract(R2,R1)
+----------------------+
| |
| |
| |
|R3|
| |
| |
| |
+----------------------+
示例2:
+----------------------------------+
| +--------+ |
| | R2 | |
| | | |
| +--------+ R1 |
| |
| |
| |
+----------------------------------+
+-----------------------+----------+
| | |
| | R2 |
| | |
| R1 +----------+
| |
| |
| |
+----------------------------------+
+----------------------------------+
| |
| |
| |
| R1 |
| +---------+ |
| | | |
| | R2 | |
+---------+---------+--------------+
+-----------------------+----------+
| | |
|| R2|
| | |
|R1+----------+
| |
| |
| |
+----------------------------------+
R3=CGRectSubstract(R2,R1)
+-----------------------+
| |
| |
| |
|R3|
| |
| |
| |
+-----------------------+
示例3:
+----------------------------------+
| +--------+ |
| | R2 | |
| | | |
| +--------+ R1 |
| |
| |
| |
+----------------------------------+
+-----------------------+----------+
| | |
| | R2 |
| | |
| R1 +----------+
| |
| |
| |
+----------------------------------+
+----------------------------------+
| |
| |
| |
| R1 |
| +---------+ |
| | | |
| | R2 | |
+---------+---------+--------------+
+----------------------------------+
| |
| |
| |
|R1|
| +---------+ |
| | | |
|| R2 ||
+---------+---------+--------------+
R3=CGRectSubstract(R2,R1)
+----------------------------------+
| |
| |
|R3|
| |
+----------------------------------+
作为对您的说明的回应,我在这里给出的代码将完全满足您的要求(假设您不关心原点XY坐标)。我已经查看了,似乎没有定义
CGRectDifference
或其他类似的方法。然而,CGRectUnion
,但这与您所寻找的正好相反。可能会出现如下情况:
CGRect frame = CGRectMake(0, 0, 320, 480);
float aWidth = frame.size.width; /* say for instance 320 */
float aHeight = frame.size.height; /* say for instance 480 */
int final = aWidth - aHeight;
NSLog(@"Should be -160, your answer: %i",final);
你的定义相当模糊,怎么说减法是水平的还是垂直的?我建议结合使用CGRectIntersection和CGRectDivide,并指定方向以消除歧义 (未测试,甚至未编译)
从另一个矩形中减去一个矩形意味着什么。R2可以在任何地方。
frame.size.height
和frame.size.width
是一个CGFloat
,而不是CGRect
。可能是打字错误吧?还有,为什么要从高度中减去宽度?不知道你在这里做什么…是的,对不起,打字错误,这只是一个例子。我已经检查了CGGeometry函数。我们有GRectUnion和cgrectunion。但这不是我需要的。是的,这也是我的结论。只要使用我给你的代码来创建你的新rect,它应该做你需要的事情,再次假设你不关心原点坐标。您甚至可以将其命名为CGRectDifference!=)我需要R3的正确坐标和尺寸。我想你的例子不符合我的需要。@cobbal:你太棒了……它应该有用……我会检查一下……最后,我得到了我想要的,从过去五天开始……)