drawInRect:withFont:lineBreakMode
呼び出しを使用してUIView
のサブビューにテキストを描画したいのですが、それは現在のコンテキストでのみ動作します。サブビューにテキストを描画するにはどうすればよいですか?
テキストを現在のビューからサブビューに描画できますか?
サブビューは一般的なUIView
インスタンスです。私はそれを避けることができれば、この目的のためだけに新しいUIView
-derivedクラスを作成したくありません。
drawInRect:withFont:lineBreakMode
呼び出しを使用してUIView
のサブビューにテキストを描画したいのですが、それは現在のコンテキストでのみ動作します。サブビューにテキストを描画するにはどうすればよいですか?
テキストを現在のビューからサブビューに描画できますか?
サブビューは一般的なUIView
インスタンスです。私はそれを避けることができれば、この目的のためだけに新しいUIView
-derivedクラスを作成したくありません。
ビューに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を再改造しています。