以编程方式使用乘数设置 centerXAnchor 约束不起作用

Setting centerXAnchor constraint with multiplier programmatically doesn't work

我正在尝试以编程方式设置带有乘数的视图的水平中心约束。但是我得到的总是以 1.0 作为乘数的约束。这就是我所做的:

private func createHalfCenteredView() {
    let newView = UIView(frame: .zero)
    newView.backgroundColor = .systemTeal
    view.addSubview(newView)
    
    newView.translatesAutoresizingMaskIntoConstraints = false
    let top = newView.topAnchor.constraint(equalTo: view.topAnchor)
    let bottom = newView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
    let width = newView.widthAnchor.constraint(equalToConstant: 100)
    let center = newView.centerXAnchor.constraint(equalToSystemSpacingAfter: view.centerXAnchor,
                                                  multiplier: 0.5)
    
    NSLayoutConstraint.activate([top, bottom, width, center])
    
    newView.setNeedsUpdateConstraints()
    view.setNeedsLayout()
    view.layoutIfNeeded()
}

我尝试使用 lessThanOrEqualToSystemSpacingAfter 而不是 equalToSystemSpacingAfter 但它仍然是一样的。乘数始终为 1.0 或恰好在中间。

有人可以帮我解决这个问题吗?谢谢

你不能使用辅助函数来使用乘法器,试试这个方法

 let center = NSLayoutConstraint(item: newView, attribute: .centerX, relatedBy: .equal, toItem: view, attribute: .centerX, multiplier: 0.5, constant: 0)

参考answer