- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的应用程序中有一个基本 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/
我正在制作一个简单的绘图程序。到目前为止,我能够用给定的颜色描画路径,一切都很好。我想知道是否有一种方法可以用纹理而不是颜色来描边它。举例来说,我想让路径看起来像铅笔线。知道我将如何去做吗? 预先感谢
我用CGContextStrokePath画在白色背景图片中的一条直线上,描边颜色为红色,alpha为1.0画线后,为什么点不是(255, 0, 0),而是(255, 96, 96)为什么不是纯红色?
我在 StackOverflow 中搜索了所有的问题和答案,但无法得到我想要的结果。我想使用 PNG 文件,在用户触摸和移动时显示为笔划。这是 PNG 文件: 但是我在 StackOverflow 上
我的应用程序中有一个基本 map View ,其中包含一组用户可定义的航点。加载 View 时,我绘制连接路点的路径。这很好用。 但是,当用户在 View 周围拖动一个路径点时,我希望它重新绘制路径,
我正在开发一个应用程序,用户应该可以在其中用手指画线。用户可以启用虚线,但我在尝试这样做时遇到了一个奇怪的问题。如果用户缓慢拖动手指,则会出现一条实线,但如果快速拖动手指,则会出现虚线。无论启用时如何
我正在尝试绘制一条直线虚线。我已经得到它,所以它绘制了破折号,但这种黑色背景颜色仍然存在。我似乎对其他问题有很多答案,但没有一个有效。 Apple's documentation似乎指向填充颜色并使用
我正在根据 touchesMoved: 方法画线,通常它工作正常。但是当我放大图像并绘制时,之前绘制的线条都发生了位移,并且越来越模糊,最终消失了。我试过使用 UIPinchGestureRecogn
我正在尝试使用 iPhone/Touch SDK 绘制一些简单的线条。我希望能够更改线条的颜色,但调用 CGContextSetRGBStrokeColor 似乎不会影响使用 CGContextAdd
我想构建一个小的折线图,当我调用我的 setPointInGraph: 方法时它会得到更新。每次我调用它时,我都希望图表用我刚刚添加的点进行更新,因此从我的最后一个点画一条线。我在下面的代码中看到问题
我有一个包含自定义 UIView 的 UIScrollView。在我的 UIView 中,我覆盖 drawRect 以使用 CGContextStrokePath 绘制路径。我想稍微改变缩放的工作方式
我需要在 View 上绘制几百条直线和圆圈,它们通过计时器函数不断移动,我在其中调用 [myView setNeedsDisplay] 来更新 View 。 我从 UIView 子类化 (myView
我是 Quartz 2D 和上下文世界的新手。为什么这段代码会崩溃? NSMutableData* pdfData = [[NSMutableData alloc] initWithLength:10
问题概要 我是一个 iPad 应用程序,在 UIScrollView 中有一个 UIImageView。我希望用户能够使用手写笔和/或他们的手指在 UIImageView 上绘图。 我让它在模拟器上运
我正在尝试编写一个手指画类型的应用程序。我在 touchesBegan 中开始一条路径,并在 touchesMoved 中添加到该路径。在 touchesMoved 中,我使用以下代码: CGCont
我正在使用 CGContextFillPath 绘制 Quartz 2D 形状,如下所示: CGContextRef conPattern = CGBitmapContextCreate(NU
这个问题在这里已经有了答案: Assigning an existing CGColor to a CGColor property works in iOS Simulator, not iOS
我是一名优秀的程序员,十分优秀!