기본적으로 drawRect 메서드는 전체 내용을 지우고 동적으로 몇 가지 새 그래픽 내용을 뷰에 그리려면이 그래픽 요소의 데이터 구조를 추상화해야합니다 (예 : 선을 추가하면이 선은
을 정의
a start point
a end point
line color
line width
is has a shadow
a line join
그래서 당신이 사용자 정의의 UIView에
-(void)drawLine:(CGContextRef)ctx withLineStruct:(LineStruct*)lineStruct
라는 방법을 구조체로 모든 속성을 넣어 LineStruct라는 새 데이터 클래스를 정의하고 정의 할 수 있습니다
@property (nonatomic) LineStruct * lineStruct;
그 안에 호출은 다른 그래픽 내용이있는 경우, 당신이 그와 같은 무승부를 할 수 있도록의 drawRect 방법을
-(void)drawRect:(CGContextRef)ctx{
CGContextRef ctx = UIGraphicsGetCurrentContext() ;
[self drawLine:ctx withLineStruct:self.lineStruct];
}
을합니다. 내용이 많은 경우 NSArray를 추가하는 등의 방법으로 UIView에 버퍼를 추가해야하고 drawRect 메서드에는 for()를 추가하여 모든 그래픽 요소를 그립니다.
그래, 그렇지만 어떻게하면 다른 콘텐츠를 나중에 다시 그리기 위해 다른 콘텐츠를 "저장"할 수 있을까요? –