我正在尝试在自定义UIView中绘制一些行。
从我所看到的,为了节省使用CoreGraphics的麻烦,我可以使用UIBezierPath(我在Mac上与NSBezierPath类似)。 我有一些代码试图绘制线但我得到输出错误,并找不到一个体面的参考与一些示例代码来说明发生了什么,任何想法? 代码如下......
代码:
- (void)drawRect:(CGRect)rect {
// Drawing code
UIBezierPath *line1 = [UIBezierPath bezierPath];
[[UIColor blackColor] setStroke];
[line1 setLineWidth:3];
[line1 moveToPoint:CGPointMake(0, 0)];
[line1 addLineToPoint:CGPointMake(320, 480)];
[line1 stroke];
}
错误:
Sat Oct 2 19:26:43 mercury.config mobileManual[46994] <Error>: CGContextSetStrokeColorWithColor: invalid context 0x0
更新:这是当前的代码,没有错误但也没有绘图......想法?
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
[self.view setBackgroundColor:[UIColor yellowColor]];
[self.view setNeedsDisplay];
}
- (void)drawRect:(CGRect)rect {
// Drawing code
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
UIBezierPath *line1 = [UIBezierPath bezierPath];
[line1 setLineWidth:3];
[line1 moveToPoint:CGPointMake(0, 0)];
[line1 addLineToPoint:CGPointMake(320, 480)];
[line1 stroke];
CGContextRestoreGState(context);
}
答案 0 :(得分:2)
就像我上面说的那样,你的代码对我来说很好。
您是否正在将Interface Builder中视图的“类标识”更改为您的UIView子类?
(顺便说一下,在viewDidLoad中调用setNeedsDisplay是不必要的,但它也没有伤害任何东西。)
答案 1 :(得分:1)
您的图形上下文无效。这是因为: