我正在繪製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