18

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

4

6 回答 6

52

你试过这个吗?

之前的 Swift 5

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

斯威夫特 5

yourLabel.adjustsFontSizeToFitWidth = false
yourLabel.lineBreakMode = .byTruncatingTail

之前的 iOS6使用UILineBreakModeTailTruncation

于 2013-10-13T22:09:42.830 回答
12

如果您使用的是AttributedStrings,请注意您必须.lineBreakModeNSMutableParagraphStyle.

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

// Add paragraphStyle to attributes, create AttributedString...
于 2018-03-28T08:40:45.007 回答
5

对于swift 2.0,它将是:

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

对于swift 4.0,它将是:

yourLabel.adjustsFontSizeToFitWidth = false;
yourLabel.lineBreakMode = NSLineBreakMode.byTruncatingTail
于 2016-08-17T04:10:55.320 回答
3

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

您将不得不使用以下代码来处理多行(但想法相似)

比如带你标签(比如detailLabel)

UILabel* detailLabel = cell.detailTextLabel;
CGSize expectedDetailLabelSize = [detailLabel.text sizeWithFont:detailLabel.font
                                             constrainedToSize:maximumLabelSize
                                                 lineBreakMode:detailLabel.lineBreakMode];
于 2013-12-06T17:35:45.357 回答
0

斯威夫特 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)

参考。链接字符串截断

于 2019-11-27T11:59:54.857 回答
0

对于 SWIFT 3+

label.adjustsFontSizeToFitWidth = false;
label.lineBreakMode = NSLineBreakMode.byTruncatingTail;
于 2018-01-15T22:39:48.717 回答