2010-04-05 3 views
1

나는 "drawingViewController"라는 클래스와 뷰를 가지고 있고, 나는의 drawRect 방법이 있습니다다른 방법으로 iPhone을 그릴 수있는 방법은 무엇입니까?

- (void)drawRect:(CGRect)rect { 

    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetLineWidth(context, 2.0); 
    CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor); 
    CGContextMoveToPoint(context, 0.0f, 0.0f); 
    CGContextAddLineToPoint(context, 100.0f, 100.0f); 
    CGContextStrokePath(context); 


} 

을하지만 다른 그리기 방법을 정의 할 싶어하지만, 일을 did't, 어떻게 그렇게 할 수 있습니다 떨어져 drawRect 메서드를 호출 떨어져? thz 사전에.

답변

2

왜 다른 방법을 원하십니까? 이것은 클라이언트 영역이 드로잉 또는 재 드로잉을 필요로 할 때 프레임 워크에 의해 호출되는 것이다.

고객님께서는 결코 drawRect: 번으로 전화하지 않으셔도됩니다. setNeedsDisplay:setNeedsDisplayInRect:으로 전화하십시오.

+0

뷰를 업데이트하려면 drawRect 메서드를 호출해야합니다. – Tattat

+0

다시 말하면 : * 결코 당신 자신을 'drawRect :'라고 부르지 마십시오. 다른 함수를 호출하면, 프레임 워크는 당신을 위해'drawRect :'를 호출 할 것이다. –

1

drawRect : 뷰를 그리기 위해 프레임 워크에서 호출됩니다. 따라서 뷰를 업데이트하려면 setNeedsDisplay : 또는 setNeedsDisplayInRect를 호출하여 뷰를 업데이트해야하는 프레임 워크를 지정해야합니다.

1

위와 같이 setNeedsDisplay :를 호출하고 시스템에서 drawRect : 적절한시기에.

별도의 스레드에서와 같이 drawRect :가 호출 될 때 이외의 시간에 그려야하는 경우 필요에 따라 그리는 오프 스크린 CGContext를 유지 한 다음 내용을 UIGraphicsGetCurrentContext drawRect : context에 복사합니다.

하나의 컨텍스트를 다른 컨텍스트로 복사하는 방법은 CGBitmapContext가 소유 한 동일한 데이터를 참조하는 CGDataProvider를 사용하여 CGImage를 설정하는 것입니다. 화면 밖의 CGBitmapContext에서 드로잉을 한 다음 CGContextDrawImage를 사용하여 다른 컨텍스트를 그립니다.

관련 문제