2009-09-16 2 views
16

Cocoa Touchで文字列のピクセル幅を測定する必要があります。誰かがこれを行う方法を説明するリンクに私を指すことができますか?文字列のピクセル幅を測定する

+5

この質問は実際にはMac OS X用のCocoaまたはiPhone OS用のCocoa Touchの機能に関する一般的な対話-cの回答を求めてはいけません。 Objective-Cは、CocoaとCocoa Touchの両方が使用するプログラミング言語です。 – PeyloW

+4

Mac OSまたはIOS用のプログラミングの他に、objective-cの他の用途はありますか?もしそうなら、それは重要ですか? –

答えて

27

iPhone OSでは若干異なりますが、代わりにNSString UIKit Additions Referenceをご覧ください。このアイデアはMac OS X用のCocoaと同じですが、もっと多くの方法があります。

テキスト使用の単一ラインの場合:

- (CGSize)sizeWithFont:(UIFont *)font 
       forWidth:(CGFloat)width 
     lineBreakMode:(UILineBreakMode)lineBreakMode 

そして複数行のテキストを使用する:

- (CGSize)sizeWithFont:(UIFont *)font 
    constrainedToSize:(CGSize)size 
     lineBreakMode:(UILineBreakMode)lineBreakMode 

テキストの単一ラインの引数としてUILineBreakModeの使用が混乱することができますが、これはあります改行は、テキストを切り詰める方法を定義するためにも使用されるためです。

+0

これは通常のフォントでうまくいくようですが、Zapfinoのようなフォントの正確な境界を与えるようには見えません。サンプルコードはhttp://paste.lisp.org/display/130803にあり、出力スクリーンショットはhttp://ScrnSht.com/juixwkにあります。任意のアイデアなぜ、どのようにそれを解決するには? – trss

+0

はiOS7で廃止されました。ドキュメントは置き換えを参照していません..何かありますか? – abbood

+0

現在のiOS7ドキュメント(Xcode 5.0.1)は、置き換え(iOS7のみ)を参照しています。 – JLundell

5

NSString Application Kit Additions Reference、具体的にはboundingRectWithSize:options:attributes:をご覧ください。そのルーチンによって返される値は、NSStringの幅を与えるはずです。

+8

'boundingRectWithSize:options:attributes:'を実際に使用する方法についてのドキュメントはあまり明確ではありません。実際にこのメソッドを使用して特定のフォントで文字列を測定する方法の例を追加できればいいと思います。 – PeyloW

0

上記の解決策は廃止されました。 iOS 7+を確認する

sizeWithFont:constrainedToSize:lineBreakMode 

は廃止されました。以下のコードスニペットを使用してください

関連する問題