2009-08-31 113 views
1

我正在绘制NSString使用drawAtPointdrawInRect,这没有太大的区别)。 有一个参数来设置换行符模式,但任何人都知道如何在字符串中加上“...”,如果它们被截断?NSString drawAtPoint/drawInRect:追加“...”截断字符串

一种选择是检查字符串是否足够短。如果不是这种情况,请迭代删除最后一个字符,直到字符串长度+ 3的最大长度为止。

我相信有更好的解决方案。任何人的想法?

最佳,

海因里希

回答

1

你最好使用另一种方法NSString

- (CGSize)drawAtPoint:(CGPoint)point 
      forWidth:(CGFloat)width 
      withFont:(UIFont *)font 
     lineBreakMode:(UILineBreakMode)lineBreakMode 

,并指定UILineBreakModeTailTruncationlineBreakMode

+0

什么是两种方法之间的lineBreakMode区别? – pablasso 2012-04-23 02:03:14

-1

您可以使用NSStringDrawingTruncatesLastVisibleLine选项和NSStringDrawingUsesLineFragmentOrigin值。

[_text drawWithRect:_textRect options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine attributes:attributes context:nil]; 
0

更新,因为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];