drawInRect:withFont:lineBreakMode
호출을 사용하여 UIView
의 하위 뷰에 텍스트를 그려야하지만 현재 컨텍스트에서만 작동합니다.어떻게 텍스트를 하위보기로 그립니 까?
텍스트를 현재보기에서 하위보기로 그릴 수 있습니까?
하위보기는 일반 UIView
인스턴스이며,이를 피할 수만 있다면 새로운 UIView
- 유도 된 클래스를 실제로 만들지는 않습니다.
drawInRect:withFont:lineBreakMode
호출을 사용하여 UIView
의 하위 뷰에 텍스트를 그려야하지만 현재 컨텍스트에서만 작동합니다.어떻게 텍스트를 하위보기로 그립니 까?
텍스트를 현재보기에서 하위보기로 그릴 수 있습니까?
하위보기는 일반 UIView
인스턴스이며,이를 피할 수만 있다면 새로운 UIView
- 유도 된 클래스를 실제로 만들지는 않습니다.
하나의 옵션은보기에 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
을
아니요, 설명 할 수 없습니다. UIView를 서브 클래 싱하는 것은 정확히 당신이 사용하기로되어있는 방법입니다. 단지 -drawRect:
메소드 만 가진 UIView 서브 클래스를 만드는 데 아무런 문제가 없습니다.
아니요, 컨텍스트에서 작업을 수행하려면 해당보기의 -drawRect :에 있어야합니다. 당신은 항상 당신의 서브 뷰를 -drawRect :를 재정의하는 UIView 서브 클래스로 만들 수 있습니다. 당신이 원하는 텍스트를 표시 할 수는 있지만, 그 시점에서 당신은 UILabel을 재발 명하고 있습니다.