使用 SnapKit 来调整宽高比和更小的尺寸
Using SnapKit to Aspect Ratio and less size
我正在尝试在 SnapKit 中创建此布局的约束,但我很难设置最大尺寸 (lessThanOrEqual)。
let maxWidthContainer: CGFloat = 435
let maxHeightContainer: CGFloat = 600
containerView.snp.makeConstraints {
[=10=].width.equalTo(containerView.snp.height).multipliedBy(maxWidthContainer / maxHeightContainer)
[=10=].centerX.centerY.equalToSuperview()
[=10=].leading.trailing.equalToSuperview().inset(38).priorityLow()
}
如果我明白你的意图,应该这样做:
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)
}
我正在尝试在 SnapKit 中创建此布局的约束,但我很难设置最大尺寸 (lessThanOrEqual)。
let maxWidthContainer: CGFloat = 435
let maxHeightContainer: CGFloat = 600
containerView.snp.makeConstraints {
[=10=].width.equalTo(containerView.snp.height).multipliedBy(maxWidthContainer / maxHeightContainer)
[=10=].centerX.centerY.equalToSuperview()
[=10=].leading.trailing.equalToSuperview().inset(38).priorityLow()
}
如果我明白你的意图,应该这样做:
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)
}