目标C:比较CGPoints

时间:2012-01-12 05:55:18

标签: iphone objective-c ios ipad if-statement

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

if (point1 != point2)
{
       //statement
}

我有这个错误

Invalid operand for binary expression...

谢谢!

4 个答案:

答案 0 :(得分:42)

尝试使用函数CGPointEqualToPoint代替。

if (!CGPointEqualToPoint(p1,p2))
{
  //statement
}

答案 1 :(得分:8)

你可以这样做:

if (!CGPointEqualToPoint(point1, point2)) {
....
}

浮动(因此CGFloats)有点棘手,因为有时候你希望它们被认为是平等的,但它们只是微不足道的。如果你想进行“模糊”比较,你可以做类似的事情:

if (fabsf(point1.x - point2.x) > 0.0001f || fabsf(point1.y - point2.y) > 0.0001f) {
...
}

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

答案 2 :(得分:7)

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

CGPointEqualToPoint 返回两个点是否相等。

bool CGPointEqualToPoint (CGPoint point1, CGPoint point2);
  
    

参数

         

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

         

第2点:第二点要研究。

         

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

  

有关详细信息,请参阅此处:CGGeometry Reference

答案 3 :(得分:5)

参见 CGPointEqualToPoint:返回两点是否相等。

bool CGPointEqualToPoint (
   CGPoint point1,
   CGPoint point2
);

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

<强>参数

  • 第1点:要检查的第一点。
  • 第2点:第二点要检查。

返回值

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