UILabel居中不起作用?

时间:2016-11-22 10:25:33

标签: ios swift

我必须以编程方式将我的UILabel居中,以便其文本的中心始终位于屏幕的中心。但是,我一直这样做,所以左手边看起来是水平居中的:

pic

我使用以下代码执行此操作:

let label = UILabel()
label.center = self.view.center
label.textAlignment = .center
self.view.addSubview(label)

所以我希望标签水平地具有相等的边距,并且内部的文本也要居中。请注意,我必须以编程方式不幸地执行此操作。谁能帮我看看我做错了什么?

7 个答案:

答案 0 :(得分:6)

只需以编程方式设置centerXAnchorcenterYAnchor

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属性,则应该在视图具有布局后设置值,因此在viewDidLayoutSubviewslayoutSubviews方法中(第一个用于视图控制器,第二个用于视图控制器)一个观点)。

另一种方法是设置约束。

答案 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)

我需要删除前导约束和尾随约束。我将其在视图中水平居中,并将其垂直间距设置为相对于另一个视图。