Swift 如何在StackView的子视图中向视图添加约束

Swift 如何在StackView的子视图中向视图添加约束,swift,autolayout,ios-autolayout,Swift,Autolayout,Ios Autolayout,在我的测试程序中有一个垂直堆栈视图,在它的第三个子视图(底部的绿色视图)中,我想在它的中心添加一个红色矩形。我尝试锚定到centerXAnchor和centerXAnchor,但不起作用。我怀疑这是因为绿色视图没有使用X和Y锚定,因为其大小和位置由垂直堆栈视图管理。在绿色视图中,将红色矩形居中的正确方法是什么?以下是我的代码和屏幕截图: class ViewController: UIViewController { @IBOutlet var greenView: UIView!

在我的测试程序中有一个垂直堆栈视图,在它的第三个子视图(底部的绿色视图)中,我想在它的中心添加一个红色矩形。我尝试锚定到
centerXAnchor
centerXAnchor
,但不起作用。我怀疑这是因为绿色视图没有使用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堆栈视图高度:

结果是:


此错误的罪魁祸首是
greenView.translatesAutoResistinggmaskintoConstraints=false
我正在使用锚api设置宽度和高度

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

此错误的罪魁祸首是
greenView.translatesAutoresizingMaskIntoConstraints=false
我正在使用锚api设置宽度、高度

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