我从一条直线开始,我希望用户能够触摸并拖动该线以使其弯曲。有效地,他们将能够将线操纵为波形。我不确定技术上最简单的方法。
我首先创建三次曲线的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