指定行数后,UILabel SizetoFit是否适合?

时间:2018-12-08 18:53:38

标签: swift uilabel sizetofit

我想在指定行数之后以编程方式创建UILabel。我正在使用Swift。我有以下代码:

interface Car {}

class Toyota implements Car {}

问题是标签的文本在一行上,而不是两行上。我必须使用sizeToFit,因为fontSize实际上是动态的(它并不总是16)。如何确定标签为2行?谢谢。

2 个答案:

答案 0 :(得分:0)

您没有在frame中指定确切的UILabel。因此您的视图仅能获得所需的宽度。您可以使用它来获取结果:

newLabel.frame = CGRect(x: 100, y: 500, width: newLabel.frame.width - 1, height: newLabel.frame.height * 2)

但这不是很好,我建议使用AutoLayout

答案 1 :(得分:0)

您可以做很多事情来换行。 1)您可以在单词之间使用“ \ n”。但是不确定您的用例以及这是否有意义。 2)不建议您定义标签的宽度。 3)如果可以转到多于2行,请使用numberOfLines = 0。但是,如果只需要2行,则给numberOfLines = 2。

也可以使用以下约束而不是框架:

 private let newLabel: UILabel = {
     let label = UILabel()
     label.translatesAutoresizingMaskIntoConstraints = false
     label.text = "Hello There"
     label.font = UIFont.systemFont(ofSize: 16)
     label.numberOfLines = 0

     return label
   }()

   view.addSubview(newLabel)

   NSLayoutConstraint.activate([
      newLabel.topAnchor.constraint(equalTo: view.topAnchor, constant: 500),
      newLabel.leadingAnchor.constraint(equalTo:view.leadingAnchor, constant: 100),
      newLabel.widthAnchor.constraint(equalToConstant: 70)
   ])