我需要画两条线。我可以使用相同的UIView子类来进行两次绘制吗?在我创建UIView之后
draw2D *myView = [[draw2D alloc] initWithFrame:myRect];
如果我更改方法以使用变量,我可以更改这些值并调用drawRect方法来绘制不同的行吗?
- (void)drawRect:(CGRect)rect
{
CGContextRef context01 = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context01, 1.0);
CGContextSetStrokeColorWithColor(context01, [[UIColor blackColor]CGColor]);
CGContextMoveToPoint(context01, 0, 0);
CGContextAddLineToPoint(context01, 800, 0);
CGContextStrokePath(context01);
CGContextRef context02 = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context02, 1.0);
CGContextSetStrokeColorWithColor(context02, [[UIColor blackColor]CGColor]);
CGContextMoveToPoint(context02, 453, 0);
CGContextAddLineToPoint(context02, 453, 800);
CGContextStrokePath(context02);
}
答案 0 :(得分:1)
只需在视图上调用setNeedsDisplay即可强制再次调用其drawRect方法。
它不会立即重绘视图,但会将其标记为需要在下一个视图更新周期中再次绘制(更新大约每隔60秒发生一次)。这意味着您可以多次调用setNeedsDisplay而不会降低性能。
答案 1 :(得分:0)
我可以使用相同的UIView子类进行两次绘制吗?
确定
如果我更改方法以使用变量,我可以更改这些值并调用drawRect方法来绘制不同的行吗?
通常,您只需创建一个包含这些变量参数的新函数或方法:
static inline void imp_DrawLine(CGContextRef gtx, CGPoint start, CGPoint end) {
CGContextMoveToPoint(gtx, start.x, start.y);
CGContextAddLineToPoint(gtx, end.x, end.y);
CGContextStrokePath(gtx);
}
- (void)drawRect:(CGRect)rect
{
CGContextRef gtx = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(gtx, 1.0);
CGContextSetStrokeColorWithColor(gtx, [UIColor blackColor].CGColor);
imp_DrawLine(gtx, CGPointMake(0, 0), CGPointMake(800, 0));
imp_DrawLine(gtx, CGPointMake(453, 0), CGPointMake(453, 800));
}