目标C:比较CGPoints

Ram*_*iro 13 iphone if-statement objective-c ipad ios

我正在尝试为我的CGPoints做一个if-else语句,我怎么能这样做,我试过这个代码......

if (point1 != point2)
{
       //statement
}
Run Code Online (Sandbox Code Playgroud)

我有这个错误

Invalid operand for binary expression...

谢谢!

xha*_*han 45

尝试使用功能CGPointEqualToPoint.

if (!CGPointEqualToPoint(p1,p2))
{
  //statement
}
Run Code Online (Sandbox Code Playgroud)


Mik*_*e K 8

你可以做:

if (!CGPointEqualToPoint(point1, point2)) {
....
}
Run Code Online (Sandbox Code Playgroud)

浮点数(以及因此CGFloats)有点棘手,因为有时候你希望它们被认为是相等的,但它们只是微不足道的.如果你想要一个"模糊"的比较,你可以这样做:

if (fabsf(point1.x - point2.x) > 0.0001f || fabsf(point1.y - point2.y) > 0.0001f) {
...
}
Run Code Online (Sandbox Code Playgroud)

这将检查point1和point2的x和y分量是否相差大于0.0001(完全任意数字,根据您所需的精度,可以是您想要的任何数字).


Nek*_*kto 7

我建议使用以下功能:(来自Apple Docs)

CGPointEqualToPoint:返回两个点是否相等.

bool CGPointEqualToPoint (CGPoint point1, CGPoint point2);
Run Code Online (Sandbox Code Playgroud)

参数

第1点:要研究的第一点.

第二点:第二点要研究.

返回值如果两个指定的点相同,则返回true; 否则,错误.

有关更多信息,请阅读:CGGeometry参考


bry*_*mac 5

请参阅CGPointEqualToPoint:返回两个点是否相等.

bool CGPointEqualToPoint (
   CGPoint point1,
   CGPoint point2
);
Run Code Online (Sandbox Code Playgroud)

http://developer.apple.com/library/mac/#DOCUMENTATION/GraphicsImaging/Reference/CGGeometry/Reference/reference.html

参数

  • 第1点:要研究的第一点.
  • 第二点:第二点要研究.

回报价值

如果两个指定的点相同,则为true; 否则,错误.