如何在 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)
所以,这是错误的,因为你不能同时设置 top
和 topMargin
因为它不像你在 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
我是新手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)
所以,这是错误的,因为你不能同时设置 top
和 topMargin
因为它不像你在 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