我的ViewController代码如下
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
let titleLabel = UILabel()
titleLabel.text = "Hello World!"
view.addSubview(titleLabel)
titleLabel.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
titleLabel.leadingAnchor.constraint(equalTo: view.leadingAnchor),
titleLabel.topAnchor.constraint(equalTo: view.topAnchor),
titleLabel.trailingAnchor.constraint(equalTo: view.trailingAnchor),
titleLabel.bottomAnchor.constraint(equalTo: view.bottomAnchor),
])
}
}
我期待着我的“ Hello World!”居中对齐。为什么不居中对齐? (实际上,它居中,但在水平方向上则向左对齐,如下所示。)
p / s:如果我移除itleLabel.leadingAnchor.constraint(equalTo: view.leadingAnchor)
,则它对齐正确。
答案 0 :(得分:1)
直到,除非我们不更改约束的优先级,否则所有的默认优先级均为1000。因此不会自动设置优先级。
为您的代码添加此行,它将起作用。
titleLabel.textAlignment = .center
答案 1 :(得分:1)
您是否希望标签以文本为中心 覆盖整个视图 ?如果是这样,请保持约束不变,并设置.textAlignment = .center
。
我将标签的背景色设置为青色,以便您了解发生的情况:
但是,我怀疑您只是希望标签在视图中居中。在这种情况下,请将您的约束更改为此:
NSLayoutConstraint.activate([
titleLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor),
titleLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor),
])
结果:
答案 2 :(得分:1)
在iOS 9和更高版本中,textAlignment
的{{1}}属性的默认值为NSTextAlignment.natural,在iOS 9之前,默认值为NSTextAlignment.left
如果您希望标签以文本为中心覆盖整个视图,则您的约束是完美的,只需设置
UILabel