首页 文章

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

提问于
浏览
0

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

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

enter image description here

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

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

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

我试图获得视图的宽度和高度:

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

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

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

1 回答

  • 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 的子视图,而不是其他视图...

相关问题