2013-01-10 93 views
5

可能重複:
Measuring the pixel width of a string in Objective C截斷NSString以適合大小?

我使用[字符串drawInRect:]的方法,並希望的字符串被截斷爲,將適合該尺寸的最大長度。這並不像找出每行有多少個字符那麼簡單,因爲每個字母都是不同的寬度。我想找到字符串不再可見的原因是我可以在字符串的末尾添加elipses。

+1

標記爲重複的問題解釋瞭如何測量NSString,而不是如何截斷它。 – picciano

+1

這裏有一個方法:' - (NSString *)stringByTruncatingToWidth:(CGFloat)寬度屬性:(NSDictionary *)textFontAttributes CGSize size = [self sizeWithAttributes:textFontAttributes];如果(size.width <= width){ return self; } 的for(int i = 2; I picciano

回答

0

你想在哪裏使用這個字符串?如果它在UILabel中,則可以使用NSLineBreakMode = NSLineBreakByTruncatingTail。

2

請參閱NSString Additions Reference中的drawInRect:withAttributes:文檔。在「常量」,你會發現一個選擇,做你自動想要什麼:

NSStringDrawingTruncatesLastVisibleLine 截斷並添加省略號最後可見行,如果文本不適合指定的邊界。

1

如果@Mundi給出的解決方案是不夠的,或者您需要知道多少文本適合你可以使用。

- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size 

在一個循環中減少文本的大小,直到它適合。