我是 iOS 的新手,我正在尝试使用uibezierPath
开发一个徒手绘图应用。有没有办法计算或接收总线长度,即使我绘制直线,弯曲或圆形。
我在touchmove方法上使用addline,我没有任何控制点。
答案 0 :(得分:8)
在touchesBegan
方法中,您可以使用此代码
{
UITouch * touch = [touches anyObject];
CGPoint present = [touch locationInView:self];
CGPoint previous = [touch previousLocationInView:self];
CGFloat angle = [self getAngle:present :previous];
}
- (float) getAngle:(CGPoint)a :(CGPoint)b
{
int x = a.x;
int y = a.y;
float dx = b.x - x;
float dy = b.y - y;
CGFloat radians = atan2(-dx,dy); // in radians
CGFloat degrees = radians * 180 / 3.14; // in degrees
return angle;
}
您可以通过任何方法调用此方法,以查找CGPoints
中两个UIView
之间的角度。
希望这有助于: - )
答案 1 :(得分:0)
无论线条是弯曲还是直线,您都可以找到任意两点之间的距离。 (我不知道如何获得线的长度)。如果直线是直线,则两点之间的距离应等于直线的距离。
试试这段代码,
- (double)getDistance:(CGPoint)one :(CGPoint)two
{
return sqrt((two.x - one.x)*(two.x - one.x) + (two.y - one.y)*(two.y - one.y));
}
这是许多人都熟悉的常用方法,(sqrt)[(x2-x1)(x2-x1)+(y2-y1)(y2-y1)]。
希望这会有所帮助: - )