我有一个带标签的容器视图,容器视图以编程方式添加到superview的下半部分,其大小超过superview的一半。我正在设置这样的大小:
testView.frame.size = CGSize(width: view.bounds.width, height: view.bounds.height / 2)
(橙色方块是容器视图,那就是我想放置标签的位置 - 在容器视图的中心)
这样,它的面积只有superview的一半。 现在,我想以编程方式将标签放置在容器视图的正中央。实际上它应该用CGAffineTransform动画并移动到中心,但为了我的问题它并不重要。
我尝试了几件事,但即使是像self.testView.midX / midY这样的简单解决方案也无法解决。它不居中或标签放在容器外的某处。
我试图获取视图宽度和高度:
let timerViewWidth = self.timerView.bounds.width
let timerViewHeight = self.timerView.bounds.height
将两者除以得到testView的确切中心,但是当我使用这些值时,标签也放在其他地方。
如何在容器视图中以编程方式居中标签?
答案 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
的子视图,而不是其他视图......