如果文本不适合框架,如何向UILabel添加点

时间:2013-10-13 22:01:08

标签: ios objective-c uilabel

我有一个带有多行UILabel的单元格,但是当文本的标签不适合框架时,不会显示任何点。我该如何解决这个问题?

6 个答案:

答案 0 :(得分:40)

你试过这个吗?

yourLabel.adjustsFontSizeToFitWidth = NO;
yourLabel.lineBreakMode = NSLineBreakByTruncatingTail;

之前 iOS6 使用UILineBreakModeTailTruncation

答案 1 :(得分:5)

对于 swift 2.0 ,它将是:

yourLabel.adjustsFontSizeToFitWidth = false;
yourLabel.lineBreakMode = NSLineBreakMode.ByTruncatingTail

对于 swift 4.0 ,它将是:

yourLabel.adjustsFontSizeToFitWidth = false;
yourLabel.lineBreakMode = NSLineBreakMode.byTruncatingTail

答案 2 :(得分:4)

如果您使用的是 AttributedStrings ,请注意,您必须将.lineBreakMode设置为NSMutableParagraphStyle

let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineBreakMode = .byTruncatingTail

// Add paragraphStyle to attributes, create AttributedString...

答案 3 :(得分:3)

如果换行模式不起作用,另一个选择是实际计算字符串的长度,如果它长于标签大小,请自行添加“...”。

您必须使用以下代码来处理多行(但想法类似)

例如,带上标签(例如detailLabel)

UILabel* detailLabel = cell.detailTextLabel;
CGSize expectedDetailLabelSize = [detailLabel.text sizeWithFont:detailLabel.font
                                             constrainedToSize:maximumLabelSize
                                                 lineBreakMode:detailLabel.lineBreakMode];

答案 4 :(得分:0)

适用于SWIFT 3 +

label.adjustsFontSizeToFitWidth = false;
label.lineBreakMode = NSLineBreakMode.byTruncatingTail;

答案 5 :(得分:0)

Swift 4.0示例:

extension String {
  /*
   Truncates the string to the specified length number of characters and appends an optional trailing string if longer.
   - Parameter length: Desired maximum lengths of a string
   - Parameter trailing: A 'String' that will be appended after the truncation.

   - Returns: 'String' object. 
  */
  func trunc(length: Int, trailing: String = "…") -> String {
    return (self.count > length) ? self.prefix(length) + trailing : self
  }
}    

let str = "I might be just a little bit too long".truncate(10)

参考链接String Truncate