Swift:如何找出容器视图的大小并以编程方式在中心放置标签?

时间:2017-10-13 14:07:20

标签: ios uiview label containers center

我有一个带标签的容器视图,容器视图以编程方式添加到superview的下半部分,其大小超过superview的一半。我正在设置这样的大小:

testView.frame.size = CGSize(width: view.bounds.width, height: view.bounds.height / 2)

enter image description here

(橙色方块是容器视图,那就是我想放置标签的位置 - 在容器视图的中心)

这样,它的面积只有superview的一半。 现在,我想以编程方式将标签放置在容器视图的正中央。实际上它应该用CGAffineTransform动画并移动到中心,但为了我的问题它并不重要。

我尝试了几件事,但即使是像self.testView.midX / midY这样的简单解决方案也无法解决。它不居中或标签放在容器外的某处。

我试图获取视图宽度和高度:

let timerViewWidth = self.timerView.bounds.width
let timerViewHeight = self.timerView.bounds.height

将两者除以得到testView的确切中心,但是当我使用这些值时,标签也放在其他地方。

如何在容器视图中以编程方式居中标签?

1 个答案:

答案 0 :(得分:0)

只需使用autolayout将UILabel添加到容器视图(我将其称为containerView)。

let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
//configure label the label as needed
containerView.addSubview(label)

containerView.addConstraint(NSLayoutConstraint(item: label, attribute: .centerX, relatedBy: .equal, toItem: containerView, attribute: .centerX, multiplier: 1.0, constant: 0.0));
containerView.addConstraint(NSLayoutConstraint(item: label, attribute: .centerY, relatedBy: .equal, toItem: containerView, attribute: .centerY, multiplier: 1.0, constant: 0.0));

如果您不想使用Autolayout,请执行@DonMag建议

testView.center = containerView.center

另外,请确保将testView添加为containerView的子视图,而不是其他视图......