raf*_*ula 4 swift ios-autolayout snapkit
我试图在 SnapKit 中创建此布局的约束,但我很难设置最大大小 (lessThanOrEqual)。

let maxWidthContainer: CGFloat = 435
let maxHeightContainer: CGFloat = 600
containerView.snp.makeConstraints {
$0.width.equalTo(containerView.snp.height).multipliedBy(maxWidthContainer / maxHeightContainer)
$0.centerX.centerY.equalToSuperview()
$0.leading.trailing.equalToSuperview().inset(38).priorityLow()
}
Run Code Online (Sandbox Code Playgroud)
Don*_*Mag 10
如果我明白你要做什么,应该这样做:
let v = UIView()
v.backgroundColor = .blue
view.addSubview(v)
let maxWidthContainer: CGFloat = 435
let maxHeightContainer: CGFloat = 600
v.snp.makeConstraints { (make) in
// centered X and Y
make.centerX.centerY.equalToSuperview()
// at least 38 points "padding" on all 4 sides
// leading and top >= 38
make.leading.top.greaterThanOrEqualTo(38)
// trailing and bottom <= 38
make.trailing.bottom.lessThanOrEqualTo(38)
// width ratio to height
make.width.equalTo(v.snp.height).multipliedBy(maxWidthContainer/maxHeightContainer)
// width and height equal to superview width and height with high priority (but not required)
// this will make it as tall and wide as possible, until it violates another constraint
make.width.height.equalToSuperview().priority(.high)
// max height
make.height.lessThanOrEqualTo(maxHeightContainer)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8447 次 |
| 最近记录: |