모든 컨텍스트를 다시 그리지 않고도 뷰에 선을 그리는 방법을 찾으려고합니다.그리기 전에 컨텍스트를 지우지 마십시오.
-(void)drawInContext:(CGContextRef)context {
for (int i = 0; i < self.drawings.count; ++i) {
Drawing* drawing = [self.drawings objectAtIndex:i];
CGContextSetStrokeColorWithColor(context, drawing.colorTrait.CGColor);
CGContextSetLineWidth(context, 1.0);
CGContextMoveToPoint(context, [[drawing.points objectAtIndex:0] CGPointValue].x * self.zoomScale, [[drawing.points objectAtIndex:] CGPointValue].y * self.zoomScale);
for (int i = 1; i < drawing.points.count; i++) {
CGContextAddLineToPoint(context, [[drawing.points objectAtIndex:i] CGPointValue].x * self.zoomScale, [[drawing.points objectAtIndex:i] CGPointValue].y * self.zoomScale);
}
CGContextStrokePath(context);
}
}
-(void)drawRect:(CGRect)rect {
if (isRedrawing) {
[self drawInContext:UIGraphicsGetCurrentContext()];
isRedrawing = NO;
}
[[UIColor redColor] set];
[currentPath stroke];
}
하지만 내 접촉 방법에 setNeedsDisplay를 호출 할 때, 뷰가 완전히 지워집니다 :
은 여기 내 그리기 방법이다. 내 방법을 작동시키는 방법이 있습니까?
drawRect에서 어디에서 drawInContext() 메서드를 호출 할 수 있습니까? – Seb
@Seb 아이디어는 offlineContext에서 발생하는 제스처 및 기타 사용자 작업 집합을 사용자에게 발생시키는 것입니다. 또한 ** setNeedsDisplay : true **를 호출하면 UIView 자체가 다시 그려집니다. 다시 그리면 자체 지워지지만 모든 그래픽 기록이 포함 된 레이어가 복사됩니다. –
이 선택의 이유를 이해했다고 생각하지만 내 앱과 함께 사용하는 방법을 이해할 수는 없습니다. 나는 서버가 나를 보내는 줄을 가지고 있으며, 처음 시작할 때 그 줄을 그림에 그려 넣고 싶다. 그 후 모든 것을 다시 그리지 않고 새로운 선을 그립니다. 사실, 당신의 방법으로 (나는 아무것도 변경하지 않았습니다.) 새로운 그림을 만든 후에는 내 그림이 전혀 표시되지 않고 선이 지워집니다. 나는 명확합니까? 더 정밀하게 설명해 주시겠습니까? 죄송합니다, 초보자입니다 .../ – Seb