2009-08-31 103 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];