如何向StackView的子视图内的视图添加约束

问题描述 投票:0回答:1

在我的测试程序中,有一个垂直的堆栈视图,在它的第三个子视图(底部是绿色的子视图)中,我想在其中心添加一个红色矩形。我尝试将锚定到centerXAnchorcenterXAnchor,但是它不起作用。我怀疑这是因为绿色视图未使用X和Y锚,因为其大小和位置由垂直堆栈视图管理。在绿色视图中将红色矩形居中的正确方法是什么?这是我的代码和屏幕截图:

class ViewController: UIViewController {
    @IBOutlet var greenView: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()
        let testView = UIView(frame: CGRect(x: 0,y: 0,width: 50,height: 50))
        testView.backgroundColor = .red
        greenView.addSubview(testView)
        greenView.translatesAutoresizingMaskIntoConstraints = false

        testView.centerXAnchor.constraint(equalTo: greenView.centerXAnchor).isActive = true
        testView.centerYAnchor.constraint(equalTo: greenView.centerYAnchor).isActive = true
    }
}

这是情节提要。唯一的限制是“第一视图高度=第二视图高度”和“绿色视图高度= 0.8 StackView高度:

Here is the story board

这是结果:

Here is the result

swift autolayout ios-autolayout
1个回答
0
投票

此错误的根源是greenView.translatesAutoresizingMaskIntoConstraints = false我正在做的是使用Anchor api设置width,height的设置>

let testView = UIView(frame: CGRect(x: 0,y: 0,width: 0,height: 0))
        testView.backgroundColor = .white
        greenView.addSubview(testView)
        testView.translatesAutoresizingMaskIntoConstraints = false

        testView.centerXAnchor.constraint(equalTo: greenView.centerXAnchor).isActive = true
        testView.widthAnchor.constraint(equalToConstant: 50).isActive = true
        testView.heightAnchor.constraint(equalToConstant: 100).isActive = true
        testView.centerYAnchor.constraint(equalTo: greenView.centerYAnchor).isActive = true
© www.soinside.com 2019 - 2024. All rights reserved.