【发布时间】:2017-09-25 19:35:29
【问题描述】:
只是尝试使用 SnapKit 自动布局添加 UILabel。我使用的代码如下:
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .lightGray
let userNameLabel = UILabel()
userNameLabel.text = "Dinesh nagarajan"
userNameLabel.backgroundColor = .white
self.view.addSubview(userNameLabel)
userNameLabel.snp.makeConstraints { (make) in
make.top.leading.trailing.height.equalTo(40)
}
}
这里我提到了前导和尾随等于 40 的约束。但我得到的结果与代码不同。我附上了图片以供参考上面的代码。为什么它的行为与预期不同...?
【问题讨论】:
-
运行/调试应用程序时实际的自动布局约束值是多少?它是在右边缘“剪裁”,还是延伸超过边缘?如果您还没有,请使用 Debug View Hierarchy 检查元素。
-
@DonMag 它在右边缘剪裁。
-
我不使用 SnapKit,但它看起来 是尾随约束的问题。如果您删除
.trailing部分,并添加第二行显示:make.trailing.equalTo(-40)会发生什么? -
如果我删除尾随约束,它会占用标签的宽度。但如果我添加
make.trailing.equalTo(-40),标签完全符合预期。 -
OK - 所以问题是:您首先将
.trailing约束设置为“超级视图的右边缘加上 40 pts”,但您确实需要它是“超级视图的右边缘减去 40 pts”。
标签: ios swift autolayout snapkit