让UILabel生成省略号而不是缩小字体

时间:2011-10-11 12:07:57

标签: iphone objective-c xcode uilabel

当我动态更改UILabel的文本时,我更喜欢获得省略号(点,点,点)而不是自动调整文本大小。如何做到这一点?

换句话说,如果我的UILabel带有大小为14的单词Cat,然后我将单词更改为Hippopotamus,则字体缩小以适合所有单词。我宁愿自动截断这个词,然后是省略号。

我假设有一个参数可以在我的UILabel对象中更改。我宁愿不以编程方式执行此操作。

5 个答案:

答案 0 :(得分:80)

设置以下属性:

label.adjustsFontSizeToFitWidth = NO;
label.lineBreakMode = NSLineBreakByTruncatingTail;

您还可以在界面构建器中设置这些属性。

答案 1 :(得分:10)

快速解决方案:

label.lineBreakMode = .ByTruncatingTail

斯威夫特3:

label.lineBreakMode = .byTruncatingTail

答案 2 :(得分:0)

在设置UILabel的样式后,我遇到了产生省略号的问题,需要使用UILabel.attributedText而不是UILabel.text。段落样式上有一个换行符模式,当使用属性文本时,它将覆盖UILabel.lineBreakMode。如果要获得省略号,则需要在属性字符串的段落样式上将lineBreakMode设置为.byTruncatingTail

例如

    let attributedString = NSMutableAttributedString(string: "...", attributes: [...]);
    let textRange = NSRange(location: 0, length: textString.length);
    let paragraphStyle = NSMutableParagraphStyle();
    paragraphStyle.lineBreakMode = .byTruncatingTail;
    textString.addAttribute(.paragraphStyle, value: paragraphStyle, range: textRange);
    uiLabel.attributedText = attributedString;

答案 3 :(得分:0)

在界面构建器中,这是要走的路:

Line Break setting in Interface Builder

答案 4 :(得分:-4)

我通过以下步骤实现了目标:

1.像我一样增加标签的高度,使2条线适合。

2.选择标签,转到attributes inspector

3.选择Line Breaks = Word Wrap

4.也增加线,如2,3

changing line break in attributes inspector 为我工作