swift - 如何在 SnapKit 中设置 heightAnchor 的乘数 - 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
推荐阅读
- javascript - 从firestore过滤数据到离子应用程序的问题
- mysql - 规范化-检查下表是否在 BCNF 中
- angular - 如何以角度在页面上制作过滤器
- arrays - 如何快速将部分字符转移到其他字符下方
- javascript - 我很困惑 if else 在 ejs 中的工作方式是否不同
- python - 为什么 Python 3.7.7 是在 Python 3.8.2 之后发布的?
- python - 在 python 中为组合创建一个简单的数据加载器
- javascript - How to access HTML DOM Property using iMacros - xPath
- c# - 显示名称插入 ID
- android - Android 应用程序中的启动画面:图像未加载