2009-05-31 16 views
0

drawInRect:withFont:lineBreakMode呼び出しを使用してUIViewのサブビューにテキストを描画したいのですが、それは現在のコンテキストでのみ動作します。サブビューにテキストを描画するにはどうすればよいですか?

テキストを現在のビューからサブビューに描画できますか?

サブビューは一般的なUIViewインスタンスです。私はそれを避けることができれば、この目的のためだけに新しいUIView-derivedクラスを作成したくありません。

答えて

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を再改造しています。

関連する問題