2009-05-31 4 views
0

drawInRect:withFont:lineBreakMode 호출을 사용하여 UIView의 하위 뷰에 텍스트를 그려야하지만 현재 컨텍스트에서만 작동합니다.어떻게 텍스트를 하위보기로 그립니 까?

텍스트를 현재보기에서 하위보기로 그릴 수 있습니까?

하위보기는 일반 UIView 인스턴스이며,이를 피할 수만 있다면 새로운 UIView- 유도 된 클래스를 실제로 만들지는 않습니다.

답변

1

하나의 옵션은보기에 UIView를 추가하는 대신보기 레이어에 CALayer를 추가하는 것입니다. CALayer에는 객체를 할당 할 수있는 delegate 속성이 있습니다. 의 CALayer 호출 :

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx { 
    if (layer == myLayer) { 
     UIGraphicsPushContext(ctx); 
     [string drawInRect:rect withFont:font lineBreakMode:mode]; 
     UIGraphicsPopContext(); 
    } 
} 
: 당신이 그런 짓을하기 위해 취할 수있는 delegate

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx 

0

아니요, 설명 할 수 없습니다. UIView를 서브 클래 싱하는 것은 정확히 당신이 사용하기로되어있는 방법입니다. 단지 -drawRect: 메소드 만 가진 UIView 서브 클래스를 만드는 데 아무런 문제가 없습니다.

1

아니요, 컨텍스트에서 작업을 수행하려면 해당보기의 -drawRect :에 있어야합니다. 당신은 항상 당신의 서브 뷰를 -drawRect :를 재정의하는 UIView 서브 클래스로 만들 수 있습니다. 당신이 원하는 텍스트를 표시 할 수는 있지만, 그 시점에서 당신은 UILabel을 재발 명하고 있습니다.

관련 문제