我正在绘制NSString
使用drawAtPoint
(drawInRect
,这没有太大的区别)。 有一个参数来设置换行符模式,但任何人都知道如何在字符串中加上“...”,如果它们被截断?NSString drawAtPoint/drawInRect:追加“...”截断字符串
一种选择是检查字符串是否足够短。如果不是这种情况,请迭代删除最后一个字符,直到字符串长度+ 3的最大长度为止。
我相信有更好的解决方案。任何人的想法?
最佳,
海因里希
我正在绘制NSString
使用drawAtPoint
(drawInRect
,这没有太大的区别)。 有一个参数来设置换行符模式,但任何人都知道如何在字符串中加上“...”,如果它们被截断?NSString drawAtPoint/drawInRect:追加“...”截断字符串
一种选择是检查字符串是否足够短。如果不是这种情况,请迭代删除最后一个字符,直到字符串长度+ 3的最大长度为止。
我相信有更好的解决方案。任何人的想法?
最佳,
海因里希
你最好使用另一种方法NSString
:
- (CGSize)drawAtPoint:(CGPoint)point
forWidth:(CGFloat)width
withFont:(UIFont *)font
lineBreakMode:(UILineBreakMode)lineBreakMode
,并指定UILineBreakModeTailTruncation
为lineBreakMode
。
您可以使用NSStringDrawingTruncatesLastVisibleLine
选项和NSStringDrawingUsesLineFragmentOrigin
值。
[_text drawWithRect:_textRect options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine attributes:attributes context:nil];
更新,因为drawAtPoint:forWidth:withFont:lineBreakMode:
答案,因为iOS的7.0已被弃用。相反,你现在可以使用drawInRect:withAttributes:
NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new]; paragraphStyle.lineBreakMode = NSLineBreakByTruncatingTail; NSDictionary *textAttributes = @{NSFontAttributeName : [UIFont systemFontOfSize:20.0f], NSParagraphStyleAttributeName : paragraphStyle}; [text drawInRect:textRect withAttributes:textAttributes];
什么是两种方法之间的lineBreakMode区别? – pablasso 2012-04-23 02:03:14