我是一名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)
}
现在我被困在将高度设置为主视图的乘数
。
最佳答案
您在 NSLayoutConstraint
中编码和代码 SnapKit
显示时设置的约束不一样。
当你设置cardViewInstance.mainCardView.topAnchor.constraint(equalTo: view.topAnchor, constant: marginOffset)
时你就知道了它的 View 将保持在顶部并从顶部填充,正如您在 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
关于swift - 如何在 SnapKit 中快速设置 heightAnchor 的倍数 - swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52578796/