UIScrollView检测圆形水龙头

时间:2015-12-05 13:00:16

标签: ios objective-c

我想知道如何检测我的UIScrollView的tap是圆形而不是rect?你能告诉我如何用obj c ??

我可以检测到这样的点击:

{{1}}

但这会像直肠形状一样对待我想要将水龙头检测为圆形。

1 个答案:

答案 0 :(得分:1)

来自this answer

  

如果您有一个带有center(center_x,center_y)和radius radius的圆,那么如何测试坐标(x,y)的给定点是否在圆内?

     

通常,x和y必须满足(x-center_x)^ 2 +(y-center_y)^ 2<半径^ 2

     

请注意满足上述等式的点<&lt;被==代替的被认为是圆上的点,并且满足上述等式的点与&lt;由&gt;取代被认为是圈外。

现在,从框架中获取中心和半径非常简单:

CGPoint center = frame.center;
CGFloat radius = frame.size.width/2;

更新:所以你的代码是 -

- (BOOL) isPoint:(CGPoint)point insideCircleFromRect:(CGRect)frame
{
  CGPoint center = frame.center;
  CGFloat radius = frame.size.width/2;

  //(x - center_x)^2 + (y - center_y)^2 < radius^2
  CGFloat lhs = pow((point.x-center.x),2) + pow((point.y-center.y),2);
  CGFloat rhs = pow(radius,2);

  if(lhs<rhs)
    return YES;
  else
    return NO;
}
相关问题