如何在 SnapKit 中设置 heightAnchor 的乘数 - swift

How to set Multiplier of heightAnchor in SnapKit - swift

我是新手iOS编程。我真的很喜欢这个设置我的观点约束的库。但是现在我怀疑在 NSLayoutConstraint 中我们可以使用主视图的 multiplier 调整高度。但是我不知道如何在 SnapKit 中实现这个。

这是NSLayoutConstraint提供的

NSLayoutConstraint.activate([
        cardViewInstance.mainCardView.topAnchor.constraint(equalTo: view.topAnchor, constant: marginOffset),
        cardViewInstance.mainCardView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
        cardViewInstance.mainCardView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20),
        cardViewInstance.mainCardView.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 1/5)
        ])

这是我用 SnapKit

所做的
cardViewInstance.mainCardView.snp.makeConstraints { (make) in
        make.top.equalTo(view)
        make.topMargin.equalTo(marginOffset)

        make.leading.equalTo(self.view)
        make.leadingMargin.equalTo(20)

        make.trailing.equalTo(self.view)
        make.trailingMargin.equalTo(-20)


    }

现在我无法将主视图的高度设置为 multiplier

你在NSLayoutConstraint中的代码和在SnapKit中设置约束的代码在显示时不一致。

你知道当你设置 cardViewInstance.mainCardView.topAnchor.constraint(equalTo: view.topAnchor, constant: marginOffset) 时,它的视图将保持在顶部并从顶部填充,就像你在 marginOffset 中设置的那样。在 SnapKit 中你设置

make.top.equalTo(view) make.topMargin.equalTo(marginOffset)

所以,这是错误的,因为你不能同时设置 toptopMargin 因为它不像你在 NSLayoutConstraint

中设置的那样

所以请用类似的东西更正它(根据文件):

make.top.equalTo(view).offset(marginOffset)

对于你如何设置 multiplier 的问题,你可以通过声明一个类似 view.frame.height / 2 的变量来实现,你可以在你的 SnapKit 约束中应用 make.height.equalTo(view.frame.height / 5)

这就是整个代码的样子

cardViewInstance.mainCardView.snp.makeConstraints { (make) in
        make.top.equalTo(view).offset(marginOffset)


        make.leading.equalTo(self.view).offset(20)


        make.trailing.equalTo(self.view).offset(-20)

        make.height.equalTo(view.frame.height / 5)

    }

希望有所帮助:D