gpt4 book ai didi

iphone - 初始加载后使用 CGContextStrokePath 重绘路径

转载 作者:行者123 更新时间:2023-12-01 17:45:49 25 4
gpt4 key购买 nike

我的应用程序中有一个基本 map View ,其中包含一组用户可定义的航点。加载 View 时,我绘制连接路点的路径。这很好用。

但是,当用户在 View 周围拖动一个路径点时,我希望它重新绘制路径,这就是我的问题。我不知道如何在第一次之后让它画出任何东西。这是我的代码:

- (void)drawRect:(CGRect)rect { ////// works perfectly

context = UIGraphicsGetCurrentContext();

CGContextSetRGBStrokeColor(context, 1, 0, 1, .7);
CGContextSetLineWidth(context, 20.0);
WaypointViewController *w = [arrayOfWaypoints objectAtIndex:0];
CGPoint startPoint = w.view.center;

CGContextMoveToPoint(context, startPoint.x, startPoint.y);

for (int i = 1; i<[arrayOfWaypoints count]; i++) {
WaypointViewController *w2 = [arrayOfWaypoints objectAtIndex:i];
CGPoint nextPoint = w2.view.center;
CGContextAddLineToPoint(context,nextPoint.x, nextPoint.y);
}
CGContextStrokePath(context);
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
if (moving) {
UITouch *touch = [touches anyObject];
currentWaypoint.view.center = [touch locationInView:self];
[delegate setUserInteraction:NO];
[self drawInContext:context];
[NSThread detachNewThreadSelector:@selector(drawInContext:) toTarget:self withObject:nil];

}

}

- (void)drawInContext:(CGContextRef)context { ///gets called, but does nothing

CGContextSetRGBStrokeColor(context, 1, 0, 1, .7);
CGContextSetLineWidth(context, 20.0);
WaypointViewController *w = [arrayOfWaypoints objectAtIndex:0];
CGPoint startPoint = w.view.center;

CGContextMoveToPoint(context, startPoint.x, startPoint.y);

for (int i = 1; i<[arrayOfWaypoints count]; i++) {
WaypointViewController *w2 = [arrayOfWaypoints objectAtIndex:i];
CGPoint nextPoint = w2.view.center;
CGContextAddLineToPoint(context,nextPoint.x, nextPoint.y);
}

CGContextStrokePath(context);
}

最佳答案

您不能使用 drawRect: 中的事件上下文其他任何地方。

而不是调用 [self drawInContext:context]调用[self setNeedsDisplay]
您在 drawRect: 中指向的上下文可能会被释放或仍然处于事件状态,但您不知道,但无论哪种方式,都无法将您放入该上下文中的位放到屏幕上。

另外,请阅读有关在 iOS 上绘图的文档 here

关于iphone - 初始加载后使用 CGContextStrokePath 重绘路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6065619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com