【发布时间】:2016-01-13 10:39:41
【问题描述】:
尽管查看了超过 3 篇关于此问题的帖子(2015 年发表),但没有一个解决我的问题。
每当我运行时,使用 UIBezierPath 绘制一条线的简单代码程序会返回:
:CGContextSetStrokeColorWithColor:无效的上下文 0x0。如果你 想看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE 环境变量。
:CGContextSetFillColorWithColor:无效的上下文 0x0。如果你 想看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE 环境变量。
:CGContextSaveGState:无效的上下文 0x0。如果你想看 回溯,请设置 CG_CONTEXT_SHOW_BACKTRACE 环境 变量。
: CGContextSetLineWidth: 无效的上下文 0x0。如果你想 查看回溯,请设置 CG_CONTEXT_SHOW_BACKTRACE 环境 变量。
:CGContextSetLineJoin:无效的上下文 0x0。如果你想看 回溯,请设置 CG_CONTEXT_SHOW_BACKTRACE 环境 变量。
:CGContextSetLineCap:无效的上下文 0x0。如果你想看 回溯,请设置 CG_CONTEXT_SHOW_BACKTRACE 环境 变量。
:CGContextSetMiterLimit:无效的上下文 0x0。如果你想 查看回溯,请设置 CG_CONTEXT_SHOW_BACKTRACE 环境 变量。
:CGContextSetFlatness:无效的上下文 0x0。如果你想看 回溯,请设置 CG_CONTEXT_SHOW_BACKTRACE 环境 变量。
:CGContextAddPath:无效的上下文 0x0。如果你想看 回溯,请设置 CG_CONTEXT_SHOW_BACKTRACE 环境 变量。
: CGContextDrawPath: 无效的上下文 0x0。如果你想看 回溯,请设置 CG_CONTEXT_SHOW_BACKTRACE 环境 变量。
:CGContextRestoreGState:无效上下文 0x0。如果你想 查看回溯,请设置 CG_CONTEXT_SHOW_BACKTRACE 环境 变量。
@interface line : UIView
UIBezierPath *myPath;
.........
@implementation
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches]anyObject];
CGPoint touchLocation = [touch locationInView:self];
myPath = [UIBezierPath bezierPath];
[myPath moveToPoint:touchLocation];
}
- (void) touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches]anyObject];
CGPoint touchLocation = [touch locationInView:self];
[myPath addLineToPoint:touchLocation];
[[UIColor blackColor]setStroke];
[[UIColor greenColor]setFill];
[myPath stroke];
}
如果我要使用 drawRect 进行绘制
- (void) drawRect:(CGRect)rect {
....
}
不会弹出任何错误。我想知道我收到这些错误是因为touchesBegan 和touchesMoved 无法执行绘图吗?
在 cocoa (OS X) 中我曾经使用过setNeedsDisplay,但它在 cocoa touch 中不存在。
我要问的是,是否有办法消除这些错误,或者是否有其他方法可以在运行时绘制 UIBezierPath。
【问题讨论】:
标签: objective-c cocoa-touch uibezierpath