我是一个新的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
的主视图。
发布于 2018-09-30 06:51:26
在显示时,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
https://stackoverflow.com/questions/52578796
复制