【问题标题】:how to make UIView with equal width and height with SnapKit in Swift?如何在 Swift 中使用 SnapKit 使 UIView 具有相等的宽度和高度?
【发布时间】:2016-10-26 08:50:00
【问题描述】:
我想在 Swift 中用 SnapKit 制作一个 UIView 矩形,像这样
lazy var customView: UIView = {
let view = UIView(frame: CGRect())
self.addSubview(view)
view.snp.makeConstraints({ (make) in
make.left.top.bottom.equalToSuperview().inset(self.inset)
make.width.equalTo(make.height) // Error in this line
})
return view
}()
【问题讨论】:
标签:
ios
swift
autolayout
snapkit
【解决方案1】:
你必须使用view.snp.height 而不是make.height:
lazy var customView: UIView = {
let view = UIView(frame: CGRect())
self.addSubview(view)
view.snp.makeConstraints({ (make) in
make.left.top.bottom.equalToSuperview().inset(self.inset)
make.width.equalTo(view.snp.height) // <---
})
return view
}()
【解决方案2】:
如果您在同一个 superview 上有 2 个视图,您可以执行下一步:
view1.snp.makeConstraints { (make) in
make.leading.equalToSuperview()
make.bottom.equalToSuperview()
make.top.equalToSuperview()
}
view2.snp.makeConstraints { (make) in
make.trailing.equalToSuperview()
make.bottom.equalToSuperview()
make.top.equalToSuperview()
make.leading.equalTo(view1.snp.trailing)
make.width.equalTo(view1.snp.width)
}
结果
以同样的方式,使用view.snp.width 或view.snp.height,您可以使用SnapKit
设置视图的相等性
【解决方案3】:
view.snp.makeConstraints({ (make) in
make.left.top.bottom.equalToSuperview().inset(self.inset)
make.width.equalTo(view.snp.height)
})