Swift:在没有文本时以编程方式使用 numberOfLines 扩展 UILabel

Swift: Expand UILabel When There is No Text Using numberOfLines Programmatically

我有一个 UILabel,希望它的最大行数为 2。我使用了 numberOfLines 属性,它运行良好。但是,当文本少于两行时,UILabel 会收缩以将其包裹起来。有什么方法可以使 UILabel 扩展到等于两行的高度,即使没有文字?

P.S。我正在使用自动布局。

您可以使用以下代码计算身高:

Swift 5

let attrs: [NSAttributedString.Key: Any] = [.font: UIFont.systemFont(ofSize: 17 /* your size*/)]
let twoLineHeight = "\n".size(withAttributes: attrs).height
label.frame.height = twoLineHeight

请注意viewDidLayoutSubviews方法中的标签高度设置

P.S。如果您使用约束,您可以使用上述值设置高度约束。

以编程方式,使用 setContentCompressionResistancePriority(_:for:) 并将其设置为较大的数字,例如 1000。您也可以在界面生成器中执行此操作