2

我是iOS新手,我正在尝试开发一个手绘应用程序,使用。uibezierPath有没有一种方法可以计算或接收总线条长度,即使我画的是直线、曲线或圆。我在 touchmove 方法上使用 addline,我没有任何控制点。

4

2 回答 2

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

希望这有帮助:-)

于 2013-06-11T07:56:35.220 回答
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)]。

希望这可以帮助 :-)

于 2013-06-13T07:29:58.917 回答