使用 NSLayout 以编程方式向 UILabel 添加约束
Posted
技术标签:
【中文标题】使用 NSLayout 以编程方式向 UILabel 添加约束【英文标题】:Adding constraint to UILabel Programatically with NSLayout 【发布时间】:2020-01-09 19:27:02 【问题描述】:我正在尝试将 UILabel 添加到我的 ViewController 并使用 NSLayout 来约束它。但是,当我尝试使用 NSLayout 时,UILabel 甚至没有出现在我的视图中。有人知道解决办法吗?
excersice1label = UILabel()
excersice1label.textAlignment = .center
excersice1label.text = "Excercise 1"
excersice1label.font = UIFont.boldSystemFont(ofSize: 20)
view.addSubview(excersice1label)
NSLayoutConstraint.activate([
excersice1label.centerXAnchor.constraint(equalTo: view.centerXAnchor),
excersice1label.centerYAnchor.constraint(equalTo: view.centerYAnchor ,constant: -110),
excersice1label.widthAnchor.constraint(equalToConstant: view.frame.width - 64)
])
【问题讨论】:
(1) 观看控制台。 Xcode 控制台会准确地告诉您问题出在哪里。 (2) 这个词是“锻炼”。 @matt 谢谢,是的,我已经有一个不同的标签来称为锻炼,所以我命名了这个锻炼。 【参考方案1】:你需要添加这一行:
exercise1label.translatesAutoresizingMaskIntoConstraints = false
据苹果documentation:
如果该属性的值为真,系统会创建一组 复制视图指定的行为的约束 自动调整蒙版。如果你想使用自动布局来动态 计算你的视图的大小和位置,你必须设置这个 属性为假,然后提供一个非模棱两可的、非冲突的 视图的一组约束。
【讨论】:
以上是关于使用 NSLayout 以编程方式向 UILabel 添加约束的主要内容,如果未能解决你的问题,请参考以下文章
对子类 UIView 的约束会抛出以编程方式创建的 UILabel 位置
使用 NSLayout 设置 UILabel 的 X 和 Y 值