我有一个自定义的UIView
课程,在- (void)drawRect:(CGRect)rect
我想要绘制一些文字。但是我希望文本块的最大宽度限制为84px,系统字体大小为12.如果文本超出此宽度,我想剪切它并使最后3个字符为“......”。 / p>
示例:
"This is some text" // length okay
"Information co..." // length truncated
我知道我可以通过NSString
的{{1}}计算给定字体的字符串宽度,但是如何获得84px宽度的最大字符串长度?
答案 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
它是您案件的可靠线索