如何在 SnapKit 中设置 heightAnchor 的乘数 - swift
Posted
技术标签:
【中文标题】如何在 SnapKit 中设置 heightAnchor 的乘数 - swift【英文标题】:How to set Multiplier of heightAnchor in SnapKit - swift 【发布时间】:2018-09-30 14:27:25 【问题描述】:我是一个新的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
。
【问题讨论】:
【参考方案1】:你在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
【讨论】:
make.height.equalTo(view.frame.height / 5)
语法应该改进为make.height.equalTo(view).multipliedBy(0.2)
以上是关于如何在 SnapKit 中设置 heightAnchor 的乘数 - swift的主要内容,如果未能解决你的问题,请参考以下文章