2

我正在尝试绘制一些与线条相连的点。该点由围绕它的轨道区域的“核”组成。

在此处输入图像描述

当我尝试移动那些给我扭曲线的点时,就会出现问题: 在此处输入图像描述

在我的drawRect:方法中,我遍历创建的点数组并使用lineToPoint:方法绘制贝塞尔路径。

Dot *prevDot = nil;
NSBezierPath *line = [NSBezierPath bezierPath];
for (Dot *dot in _dots) {
    if (!prevDot) {
        [line moveToPoint:dot.position];
    } else {
        [line lineToPoint:dot.position];
    }
    prevDot = dot;
}
[line stroke];

我的问题是,一旦其中一个点被移动,我应该使用什么技术来实现点之间的干净线更新?

4

1 回答 1

3

您的绘图代码是正确的。但是,您必须在视图更改时更新大部分视图。看起来您只是在更新移动的点,而不是线。一个简单的解决方法是调用:

[myView setNeedsDisplay:YES];

每当您更改点的位置时。这将重绘整个视图。您可以使用其他方法更有选择性地仅在视图更改的地方更新视图,这可能会为您提供更好的性能。

NSNotification通常,您会在从数据类发送的方法调用的方法中调用它。

于 2011-03-22T06:31:53.343 回答