我想使用drawInRect:withFont:lineBreakMode
調用將文本繪製到UIView
的子視圖中,但只能在當前上下文中操作。如何將文本繪製到子視圖中?
是否可以從當前視圖中將文本繪製到子視圖中?
子視圖是一個通用的UIView
實例,我真的不想創建一個新的UIView
派生類,只是爲了這個目的,如果我能避免它。
我想使用drawInRect:withFont:lineBreakMode
調用將文本繪製到UIView
的子視圖中,但只能在當前上下文中操作。如何將文本繪製到子視圖中?
是否可以從當前視圖中將文本繪製到子視圖中?
子視圖是一個通用的UIView
實例,我真的不想創建一個新的UIView
派生類,只是爲了這個目的,如果我能避免它。
一個選擇是將CALayer添加到視圖的圖層,而不是將UIView添加到視圖。 CALayer有一個delegate
屬性,您可以指定任何對象。該CALayer的呼籲:
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
if (layer == myLayer) {
UIGraphicsPushContext(ctx);
[string drawInRect:rect withFont:font lineBreakMode:mode];
UIGraphicsPopContext();
}
}
:
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
在
delegate
,你可以採取這樣做
不,你不能做你所描述的。 UIView的子類化正是你應該使用的方法 - 創建一個只有簡單的-drawRect:
方法的UIView子類沒有任何問題。
不,如果您要使用上下文執行某些操作,您必須位於該視圖的-drawRect :.你總是可以讓你的子視圖成爲一個UIView子類,它覆蓋-drawRect:顯示你想要的文本...但是在那個時候,你有點重新創建UILabel。