2009-05-25 25 views
0

サブビューへの参照を取得するためにIBoutletを使用していますが、インタフェースビルダーのメインビューに追加しましたが、 drawRect:私は描く文脈を得ることができません。とにかく、私はサブビューを描くことができるようにグラフィックスコンテキストを取得できますか?私はこれについてどうやって行くのですか?iPhoneはサブビューのCGContextRefコンテキスト参照を取得する必要があります

+1

ビューにはコンテキストがありません。コンテキストは '-drawRect:'が呼び出されたときに作成されますが、 '-drawRect:'の範囲外ではコンテキストが存在しません。 –

答えて

3

このように描画することはできません。 drawRect呼び出しに応答して描画する必要がありますが、フレームワークによっては可能ではありません。

正しい方法は:XcodeにUIViewサブクラスを作成することです。 Interface Builderに切り替えて、サブビューを選択し、 "Class Identity"( "Tools> Identity Inspector"の下)を新しいサブクラスの名前に変更します。

サブクラスでdrawRectを実装できます。

0

他のビューでは描画しないでください。サブビューでは描画しないでください。サブビュー自体が描画され、独自のグラフィックスコンテキストにアクセスできます。別のビューのコンテキストにアクセスすることはできません。それらはフレームワークによって処理され、適切なビューのために-drawRect:を呼び出す前に設定されます。

1

技術的には、あるオブジェクトがview.layer.delegateルート経由で他のオブジェクトの描画代行者になる手段があります。 (CALayerの*)層inContext:一つは

  • (無効)drawLayer実装するためのデリゲート構築することができます(CGContextRef)CTX

をこれはあなたにそれが必要になった描画命令を再利用することができます。しかし、別のプログラマを読んで理解するのは面倒な作業です。コードの重複を排除しない限り、ほとんどの人はそれを避けるでしょう。

関連する問題