iOS上的UIBezierPath操作

我从一条直线开始,我希望用户能够触摸并拖动线条以使其弯曲.实际上,他们有能力将线条操纵成波浪形状.我不确定技术上实现这一目标的最简单方法.

我开始创建一个立方曲线的UIBezierPaths数组,目的是操纵控制点 – 但是看起来,一旦绘制出UIBezierPaths的控制点,就不可能改变它们了?

关于最简单的技术方法的任何建议都表示赞赏.

最佳答案 您可以使用变量作为控制点在drawRect中绘制quadCurve(一个控制点Bezier曲线),然后更新touchesBegan方法中的控制点,如下所示.请注意,您需要使用setNeedsDisplay重绘

- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    controlPoint = [[touches anyObject] locationInView:self];
    [self setNeedsDisplay];
}

- (void)drawRect:(CGRect)rect {

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
    CGContextSetLineWidth(context, 1.0);

    CGContextMoveToPoint(context, 0, 320);
    CGContextAddQuadCurveToPoint(context, controlPoint.x, controlPoint.y, 320, 200);
    CGContextStrokePath(context);

}

如果你有多个控制点,那么touchesMoved方法中需要一些视觉元素和额外的逻辑… e

点赞