获取给定字体和rect的字符串长度

时间:2012-05-10 18:57:33

标签: iphone objective-c ios ios5 core-graphics

我有一个自定义的UIView课程,在- (void)drawRect:(CGRect)rect我想要绘制一些文字。但是我希望文本块的最大宽度限制为84px,系统字体大小为12.如果文本超出此宽度,我想剪切它并使最后3个字符为“......”。 / p>

示例:

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

我知道我可以通过NSString的{​​{1}}计算给定字体的字符串宽度,但是如何获得84px宽度的最大字符串长度?

3 个答案:

答案 0 :(得分:4)

如果我正确了解您的情况,那么您应该使用方法
- (CGSize)drawAtPoint:(CGPoint)point forWidth:(CGFloat)width withFont:(UIFont *)font lineBreakMode:(UILineBreakMode)lineBreakMode并使用UILineBreakModeTailTruncation作为换行模式。

答案 1 :(得分:0)

我想您想知道某个宽度和字体允许的最大字符数。不幸的是,这是不可能知道的,因为有许多不同的字符大小('m'比'l'宽)。

您可以做的是致电:

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

这将改变你的fontSize浮点值(因为你将指针传递给它),它现在将是你可以使用的最大字体大小,而不会有换行符。使用您提供的浮动,您可以创建一个新字体并将大小设置为浮动。

希望这有帮助!

答案 2 :(得分:0)

此方法对您的情况有帮助: - (CGSize)drawAtPoint:(CGPoint)point forWidth:(CGFloat)width withFont:(UIFont *)font lineBreakMode:(UILineBreakMode)lineBreakMode

它是您案件的可靠线索