首页 > 解决方案 > 使用约束以编程方式创建 UILabel?

问题描述

我想要做的是每次在我的代码中发生特定操作时以编程方式创建一个新的 UILabel。我知道我想给标签的 x、y 和高度,但我不想给它一个固定的宽度。我想约束边,使 UILabel 宽度等于屏幕的宽度,并且如果方向翻转,标签宽度将会改变。

我考虑过使用:

CGRect(x:, y:, width:, height:)

但是,如果我使用它,我必须给它一个设定的宽度,所以我认为它不会起作用。

我也尝试过使用:

CGPoint(x:, y:)

然后设置前导、尾随和高度锚,然而,这似乎也不起作用,因为即使它编译了,当我尝试创建新的 UILabel 时出现错误。

我对 Swift 编程有点陌生,所以我不确定是否有明显的解决方法。

标签: swiftxcodeconstraintsuilabel

解决方案


您可以使用以下代码以编程方式创建 UILabel。

private let label: UILabel = {
    let label = UILabel()
    label.translatesAutoresizingMaskIntoConstraints = false
    label.numberOfLines = 0
    label.text = "Hello World"
    return label
}()

然后在你的 viewDidLoad()

addSubview(label)
NSLayoutConstraint.activate([
    topAnchor.constraint(equalTo: label.topAnchor),
    bottomAnchor.constraint(equalTo: label.bottomAnchor),
    leadingAnchor.constraint(equalTo: label.leadingAnchor),
    trailingAnchor.constraint(equalTo: label.trailingAnchor)
])

推荐阅读