我想知道如何检测我的UIScrollView的tap是圆形而不是rect?你能告诉我如何用obj c ??
我可以检测到这样的点击:
{{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;
}