无法将类型为"NSLayoutConstraint"的不可变值作为 inout 参数传递



我尝试重新分配推荐nslayoutconstraint。

class ViewController: UIViewController {
    @IBOutlet weak var myConstraint: NSLayoutConstraint!
    override func viewDidLoad() {
        super.viewDidLoad()
        exchangeConstraint(&myConstraint)
    }
}
extension UIViewController {
    func exchangeConstraint(_ constraint: inout NSLayoutConstraint) {
        let spacing = constraint.constant
        view.removeConstraint(constraint)
        constraint = view.topAnchor.constraint(equalTo: anotherView.topAnchor, constant: spacing)
        view.addConstraint(constraint)
    }
}

,但这里给我带来了错误:

exchangeConstraint(&myConstraint)
-------------------^
Cannot pass immutable value of type 'NSLayoutConstraint' as inout argument

我不明白的是为什么它说不变的价值,而约束被声明为变量,而不是常数。

我通过简单地将constraint参数声明为明确的无包裹的NSLayoutConstraint

来解决它
func exchangeConstraint(_ constraint: inout NSLayoutConstraint!) {
    ...
}

update

这是一个我使用的项目:https://github.com/truffls/compatible-layout-anchors-anchors-ios

相关内容

最新更新