いつものiPhone OSプログラミングガイドにも「QuartzとUIKitを使用した描画」なんて章があって、説明はされてるんだけどね。ここらへんは読むのが当たり前として、最終的にはサンプルソース。

 iPhone Dev Center

に行って、iPhone Reference Library>Resource Types>Sample Codeをあさってみると

 Quartz2D APIを呼び出す簡単なソースだよ、ツ~、説明のあるサンプルソース発見。

 QuartzDemo

 求めよ、されば与えられん。しかも、もろに。
 軽く動かしてみると、「Ellipses&Arcs」や、「Images&Tiling」あたりが使えそう。さっそく

 MainViewController.m

を調べると、

// Ellipses, arcs, and as a bonus round-rects!
controller.quartzViewDelegate = [[[EllipseArcDrawing alloc] init] autorelease];

あたりから、EllipseArcDrawingクラス定義を読めばいいってのがわかる。
 EllipseArcDrawingクラスがどこにあるかは、地道に検索してもいいけど下のように、EllipseArcDrawingの文字の上あたりで右クリックするとコンテキストメニュー出るから、そこで「定義へジャンプ」を選べばいい。マックで右クリックどうやってやるかは、過去記事読むように。

テン・シー・シー-fig.1

で、実装されてる

 -(void)drawView:(QuartzView*)view inContext:(CGContextRef)context bounds:(CGRect)bounds

を見てみると

// Drawing with a white stroke color
CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0);
// Draw them with a 2.0 stroke width so they are a bit more visible.
CGContextSetLineWidth(context, 2.0);
// Stroke ellipse convenience that is equivalent to AddEllipseInRect(); StrokePath();
CGContextStrokeEllipseInRect(context, CGRectMake(30.0, 120.0, 60.0, 60.0));

なんてのが、使えそうなのがわかる。ここらへんの機能の調査方法は「iPhoneアプリ開発、その(33)」あたりを参考にしてね。
 あと

 CGContextRef context

を得る方法は

 UIGraphicsGetCurrentContext()

これもdrawViewの引数なわけだから、drawViewを呼び出しているところを調べれば見つけることができる。ま~探すまでもなく「iPhone OSプログラミングガイド」読んでりゃ分かってる話だけどな。

 さっそく

 FlipsideView.m



 drawRect

に実装してみましょう。今回は、素早く確認したいのでFlipside.xcodeprojを起動して編集。

 どうすか?
 スライダにあわせて円が大きくなったり、線の太さが変わったりしましたか?
 これでこそ、独自ビューを用意しかかいがあったてえぇもんよ。でもって、ChimpanzeeGame.xcodeprojもビルドして実行すれば、連動して変わってる。ただし、ゲーム画面でのボタンの大きさは3段階なので、あいかわらず違和感ばりばりですな。

------------
サンプルプロジェクト:Chimpanzee-15.zip