2009-05-31 48 views
0

我想使用drawInRect:withFont:lineBreakMode調用將文本繪製到UIView的子視圖中,但只能在當前上下文中操作。如何將文本繪製到子視圖中?

是否可以從當前視圖中將文本繪製到子視圖中?

子視圖是一個通用的UIView實例,我真的不想創建一個新的UIView派生類,只是爲了這個目的,如果我能避免它。

回答

1

一個選擇是將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,你可以採取這樣做

0

不,你不能做你所描述的。 UIView的子類化正是你應該使用的方法 - 創建一個只有簡單的-drawRect:方法的UIView子類沒有任何問題。

1

不,如果您要使用上下文執行某些操作,您必須位於該視圖的-drawRect :.你總是可以讓你的子視圖成爲一個UIView子類,它覆蓋-drawRect:顯示你想要的文本...但是在那個時候,你有點重新創建UILabel。

相關問題