我从一条直线开始,我希望用户能够触摸并拖动该线以使其弯曲。有效地,他们将能够将线操纵为波形。我不确定技术上最简单的方法。

我首先创建三次曲线的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

07-26 09:37