2009-04-02 13 views
3

私はiPhoneアプリでMailアプリと同様の楕円を作りたいと思っています。参照用のスクリーンショットは次のとおりです。http://dl-client.getdropbox.com/u/57676/screenshots/ellipse.pngiPhoneアプリでこの楕円を描く最善の方法は何ですか?

最終的に、数値の中央に楕円があります。この作業にUIImageを使用するのが最善でしょうか?おそらくQuartzでそれを描画するオーバーヘッドは少ないでしょうか?それがQuartzで終了した場合は誰でもそれを描画するためのソリューションを表示できますか?

答えて

9

ああ、丸い長方形。それはあまりにも難しいことではありません。ベジェパスを使用して、必要なものを得ることができます。コードは次のようになります。

CGRect rect; 
CGFloat minX = CGRectGetMinX(rect), minY = CGFloatGetMinY(rect), maxX = CGFloatGetMaxX(rect), maxY = CGRectGetMaxY(rect); 

CGFloat radius = 3.0; // Adjust as you like 
CGContextBeginPath(context); 
CGContextMoveToPoint(context, (minX + maxX)/2.0, minY); 
CGContextAddArcToPoint(context, minX, minY, minX, maxY, radius); 
CGContextAddArcToPoint(context, minX, maxY, maxX, maxY, radius); 
CGContextAddArcToPoint(context, maxX, maxY, maxX, minY, radius); 
CGContextAddArcToPoint(context, maxX, minY, minX, minY, radius); 
CGContextClosePath(context); 

を今、あなたはあなたのグラフィックスコンテキスト上のパスを持っていることを、あなたはそれを描くかCGContextDrawPathCGContextFillPath機能を使用して、それを概説することができます。

+0

半径が高さの半分に等しいMail'sのようなピルでは、4つの90度の円弧の代わりに2つの180度の円弧を描くことでこれを簡単にすることができます。 –

+0

アレックスとピーターの束をありがとう。私が楕円に数値を計画したいのであれば、elipseの中心に到達してその上にテキストを書くためには、どのような数学が必要ですか? – Coocoo4Cocoa

+1

私はそれが丸薬であることに気付かなかった!ピーターが言ったことをする。それはコード行を節約します。 NSStringへのUIKitの追加を見てください。描画する文字列でsizeWithFont:を呼び出して、x = CGRectGetMinX(rect)+(CGRectGetWidth(rect) - textSize.width)/2.0で中心に置くことができます。 Y coordのために繰り返します。 – Alex

関連する問題