我必须以编程方式将我的UILabel居中,以便其文本的中心始终位于屏幕的中心。但是,我一直这样做,所以左手边看起来是水平居中的:
我使用以下代码执行此操作:
let label = UILabel()
label.center = self.view.center
label.textAlignment = .center
self.view.addSubview(label)
所以我希望标签水平地具有相等的边距,并且内部的文本也要居中。请注意,我必须以编程方式不幸地执行此操作。谁能帮我看看我做错了什么?
答案 0 :(得分:6)
只需以编程方式设置centerXAnchor
和centerYAnchor
:
view.addSubview(label)
label.translatesAutoresizingMaskIntoConstraints = false
label.centerXAnchor.constraint(equalTo: view.centerXAnchor, constant:0).isActive = true
label.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant:0).isActive = true
label.widthAnchor.constraint(equalToConstant: 50.0).isActive = true
这应该可以帮到你
答案 1 :(得分:1)
您应该将horizontally in container, Vertically in container, fixed width and fixed heigh
这4个约束固定到label
。这四个限制将始终将您的标签保持在屏幕的中心位置!
答案 2 :(得分:1)
尝试此操作而不添加任何约束
label.center = CGPointMake((self.view.frame.size.width - label.frame.size.width) / 2 , (self.view.frame.size.height - label.frame.size.height) / 2);
答案 3 :(得分:0)
这是因为视图正在使用约束。
如果要使用center
属性,则应该在视图具有布局后设置值,因此在viewDidLayoutSubviews
或layoutSubviews
方法中(第一个用于视图控制器,第二个用于视图控制器)一个观点)。
另一种方法是设置约束。
答案 4 :(得分:0)
尝试添加label.sizeToFit()
应该帮助
答案 5 :(得分:0)
试试这个。它为我工作
var label = UILabel(frame: CGRectMake(self.view.frame.origin.x + self.view.frame.size.width/2, self.view.frame.origin.y + self.view.frame.size.height/2, 200, 21))
label.textAlignment = NSTextAlignment.Center
label.text = "I'am a test label"
label.center = CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2)
self.view.addSubview(label)
答案 6 :(得分:0)
我需要删除前导约束和尾随约束。我将其在视图中水平居中,并将其垂直间距设置为相对于另一个视图。