2

カスタムUIViewクラスがあり、- (void)drawRect:(CGRect)rectテキストを描画したいと思います。ただし、システムフォントサイズ12でテキストブロックを最大幅84pxに制限したいのですが、テキストがこの幅を超える場合は、テキストを切り取って最後の3文字を「...」にします。

例:

"This is some text"    // length okay
"Information co..."    // length truncated

NSString与えられたフォントで文字列の幅を'sで計算できることは知っています- (CGSize)sizeWithFont:(UIFont *)fontが、84px幅の最大文字列長を取得するにはどうすればよいですか?

4

3 に答える 3

4

私があなたの状況を正しく理解している場合は、メソッド
- (CGSize)drawAtPoint:(CGPoint)point forWidth:(CGFloat)width withFont:(UIFont *)font lineBreakMode:(UILineBreakMode)lineBreakModeを使用し、改行モードにUILineBreakModeTailTruncationを使用する必要があります。

于 2012-05-10T19:25:14.570 に答える
0

特定の幅とフォントで許可される最大文字数を知りたいと思います。残念ながら、さまざまな文字サイズがあるため、それを知ることは不可能です(「m」は「l」よりも幅が広い)。

あなたができることは電話です:

[@"Your text here" sizeWithFont:yourFont minFontSize:smallestFontSizeYouWillAccept actualFontSize:&pointerToYourFontSizeFloatValue forWidth:yourWidthConstraint lineBreakMode:yourLineBreakMode];

これにより、fontSize float値が変更され(ポインターを渡したため)、改行なしで使用できる最大のフォントサイズになります。与えたフロートを使用して、新しいフォントを作成し、サイズをフロートに設定できます。

お役に立てれば!

于 2012-05-10T19:45:40.363 に答える
0

この方法は、次の場合に役立ちます。 - (CGSize)drawAtPoint:(CGPoint)point forWidth:(CGFloat)width withFont:(UIFont *)font lineBreakMode:(UILineBreakMode)lineBreakMode

あなたのケースのためのその信頼できる手がかり

于 2012-05-11T08:11:19.597 に答える