iOS:い測定の幅と高さの文字列石?
-
06-09-2019 - |
質問
以前私は私の質問はApple社からのドキュメントを再するあらゆる側面を含んでいますの幅を文字列水晶振動子を用いた:
場合はテキストの測定は重要な申請が可能で を計算して水晶振動子を用いた2次元ます。しかし、最初の 利用をお考えのATSUI、その強度はレイアウトやテキスト 測定できます。ATSUI複数の機能を得るテキストメトリックスを表します。ない のみを取得することができま後のレイアウトのテキストの指標が、場合に で取得する前にレイアウトテキストメトリックスを表します。とは異なり 石英は、必ず実施してくださの計算を自分ATSUI 計算を測定します。例えば、を確認することができ 画像の境界の矩形のためのテキストの呼び出しによるATSUI機能 ATSUMeasureTextImage.
その石英文のニーズによりATSUI( ココア)での手順を計測する幅のテキスト 石英をしっかり:
- 電話の機能CGContextGetTextPositionを得る現在のテキストの位置にします。
- セットのテキストの描画モードにkCGTextInvisibleこの機能を使CGContextSetTextDrawingMode.
- 描画、テキストの呼び出しによる機能CGContextShowText描きのテキストの現在のテキスト位置にします。
- を決めテキスト位置の呼び出しによる機能CGContextGetTextPosition.
- 減算の開始位置から終了位置を決定するの幅を指定します。
ここで私の質問:
本当にこれが最良の方法を決定する幅の文字列を用いたグラフィック?そうでガスからテキストとの共存に2Dグラフィカル要素を使い、同じコンテキストのためのすべてのレンダリングかかったと思っていうのはありましたがコンパクト方式のように:
CGContextGetTextWidthAndHeight(context, text);
こATSUIが古いとかで置き換えるための中核です。そうなればよいでていただけるとありがたいでます。
解決
IPhone SDKにあり、家族の方法 NSString
を提供すると考えている。
としてのiOS7.0, これらのメソッド:
- boundingRectWithSize:options:attributes:context:
- sizeWithAttributes:
古いバージョンのiOSまたこれらの、推奨されていません:
– sizeWithFont:
– sizeWithFont:forWidth:lineBreakMode:
– sizeWithFont:constrainedToSize:
– sizeWithFont:constrainedToSize:lineBreakMode:
– sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:
他のヒント
、あなたが記載された技術を使用する必要があります。これは、バックグラウンドスレッドで非同期的にレンダリングする、またはその他の理由のために、バックグラウンドでのカスタムグラフィックスを描画するときだ行いCATiledLayer、のようなものを使用するときに注意することが特に重要です。
私は、あなたが「シンプル」のグラフィックをやっているときPGBに同意し、あなたはメインスレッドで実行されていることが保証されています。しかし、sizeWithFontはあなたが説明した手法と同じことをやっている - それは単にUIGraphicsGetCurrentContextを()を使用して、あなたのためにそれをやっている。
。