私は私の質問をする前に、これはAppleのドキュメントreからである:クォーツを使用して文字列の幅を決定する方法:iPhone SDK:Quartzを使用して文字列の幅と高さを測定するにはどうすればよいですか?
テキスト測定は、アプリケーションにとって重要である場合、それはクォーツを使用して計算する 可能です2D機能。ただし、最初に の強度をテキストレイアウトで使用し、 測定を使用することを検討してください。 ATSUIには、テキストメトリックを取得する関数がいくつかあります。 では、レイアウト後のテキストメトリックしか取得できませんが、まれに、 が必要です。レイアウト前のテキストメトリックを取得できます。 とは異なり、計算を自分で実行する必要があるため、ATSUI があなたのために測定値を計算します。たとえば、ATSUI関数 ATSUMeasureTextImageを呼び出すことによって、テキストの画像境界矩形 を取得できます。
あなたはクォーツテキストがATSUI(または ココア)よりももっと自分のニーズに合っていることを決定した場合、あなたは クォーツはそれを描画する前に、テキストの幅を測定するために、これらの手順に従うことができます:
- に機能CGContextGetTextPositionを呼び出し現在のテキスト位置を取得します。
- CGContextSetTextDrawingMode関数を使用して、テキスト描画モードをkCGTextInvisibleに設定します。
- CGContextShowText関数を呼び出してテキストを描画し、現在のテキスト位置にテキストを描画します。
- 関数CGContextGetTextPositionを呼び出すことによって、最終的なテキストの位置を決定します。
- 開始位置を終了位置から差し引いて、テキストの幅を決定します。ここで
私の質問です:
は、これは本当にコアグラフィックスを使用して文字列の幅を決定するための最良の方法ですか?私のテキストは2Dグラフィック要素と共存するので、すべてのレンダリングで同じコンテキストを使用したいと思います。私はいくつかのコンパクトなメソッドがあることを望んでいました:
CGContextGetTextWidthAndHeight(context、text);
私はATSUIが古く、コアテキストに置き換えられると読んでいます。それが本当ですか、そうなら、それはiPhone SDKにありますか? iPhone SDKで
コアテキストがiOS 4で出荷されるようになりました。しかし、pgbの回答方法は最も簡単です。 – Eonil