2

我有一个自定义UIView类,并且- (void)drawRect:(CGRect)rect我想在其中绘制一些文本。但是,我希望在系统字体大小为 12 时将文本块的最大宽度限制为 84 像素。如果文本超过此宽度,我想将其剪切并将最后 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 浮点值(因为您将指针传递给它),它现在将是您可以使用的最大字体大小而无需换行。使用您给它的浮动,您可以创建一个新字体并将大小设置为您的浮动。

希望这可以帮助!

于 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 回答