2012-03-29 19 views
0

私のiPhoneアプリにはいくつかのボタンが必要です(iPadに移植される可能性があります)。私はそのようなボタンを作るための少なくとも2つの方法を知っています: 1.画像を背景とした通常のUIButtonを任意のグラフィックスエディタで描くことができます。 2. CoreGraphicsツールを使用してUIButtonをサブクラス化し、独自のdrawRect:メソッドを実装する。カスタムボタンを描画するにはどうすればよいですか?

私は理由はわかりませんが、私は2番目のものを使う傾向があります。なぜなら、それはより難しくてパフォーマンスが低いようです。

ボタンの描画をプログラムで実装すると、さまざまな解像度でいくつかのアイコンが必要ないように「クロスプラットフォーム」になると思いますか?

本当にシンプルなアイコンの場合は、ベジェ曲線や円で色が塗られています。画像ボタンよりも遅くプリフォームするのでしょうか?

そして誰かがベクター画像を描画するためのグラフィカルインターフェイスを備えたツールを知っていて、それをdrawRect:メソッドに貼り付けるCoreGraphicsコードに変換するのですか?

ありがとうございます。

+1

http://itunes.apple.com/gb/app/paintcode/id507897570 – hypercrypt

+0

ああ!それは素晴らしい見えます。このリンクをありがとうございました。このプログラムも使いますか? – BartoNaz

+0

私はトライアルを使用しました(ウェブサイト上で、アプリストア経由でリンクしています)。 – hypercrypt

答えて

1

drawRectの使用を心配しないでください。 Windowsとは異なり、iOSは結果をビットマップにキャッシュし、ビューのサイズが変更されたときにのみ再描画します(これは、実際に必要なものです - 再度スケーリングしたいからです)。

ベクターアプリでは、不透明度を使用できます。アイコンをCoreGraphicsのソースコードにエクスポートするオプションがあります:http://likethought.com/opacity/

+0

リンクをありがとう。ボタンが背景画像を使用すると、画像をより頻繁に再描画することを意味しますか?または、違いは最初です:CGボタンはコードから描画され、イメージボタンはファイルから読み込まれますが、その後はボタンのサイズに変更が加えられないと、同じ方法で動作します。キャッシュ? – BartoNaz

+1

修正します。 UIViewは明示的にsetNeedsDisplayを呼び出すとき、またはリサイズとcontentMode = UIViewContentModeRedrawを呼び出すときの2つのケースで再描画されます。 UIViewのサイズを変更するだけでは、setNeedsRedrawを呼び出すか、contentMode = UIViewContentModeRedrawを呼び出さない限り、drawRectの呼び出しは生成されません。それ以外の場合、OSは現在のcontentModeに従ってキャッシュされたビットマップを単純にスケーリングします。 –

関連する問題