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

Eri*_*tto 29 iphone xcode objective-c uilabel

当我动态更改UILabel的文本时,我宁愿得到省略号(点,点,点),而不是自动调整文本大小.怎么做到这一点?

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

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

jba*_*100 84

设置以下属性:

label.adjustsFontSizeToFitWidth = NO;
label.lineBreakMode = NSLineBreakByTruncatingTail;
Run Code Online (Sandbox Code Playgroud)

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

  • UILineBreakModeTailTruncation被标记为已弃用,文档建议使用NSLineBreakByTruncatingTail.哪个做同样的事情. (7认同)
  • 我还相信 UILabels 的默认设置是将 adjustmentFontSizeToFitWidth 设置为 NO (2认同)

dij*_*iji 12

Swift解决方案:

label.lineBreakMode = .ByTruncatingTail
Run Code Online (Sandbox Code Playgroud)

斯威夫特3:

label.lineBreakMode = .byTruncatingTail
Run Code Online (Sandbox Code Playgroud)


jak*_*nge 10

我有生产省略号的问题,我的风格一个UILabel和使用后需要UILabel.attributedText代替UILabel.text。段落样式上有一个换行模式,UILabel.lineBreakMode在使用属性文本时会覆盖它。如果要实现省略号,则需要在属性字符串的段落样式上设置lineBreakModeto .byTruncatingTail

例如

    let text = "example long string that should be truncated"
    let attributedText = NSMutableAttributedString(
        string: text, 
        attributes: [.backgroundColor : UIColor.blue.cgColor]
    )
    let range = NSRange(location: 0, length: attributedText.length)
    let paragraphStyle = NSMutableParagraphStyle()
    paragraphStyle.lineBreakMode = .byTruncatingTail
    attributedText.addAttribute(.paragraphStyle, value: paragraphStyle, range: range)
    uiLabel.attributedText = attributedText
Run Code Online (Sandbox Code Playgroud)