Код: Выделить всё
let padding = 10.0
let preview = UIImageView()
preview.setContentHuggingPriority(.required, for: .vertical)
preview.setContentHuggingPriority(.required, for: .horizontal)
preview.backgroundColor = .red
preview.contentMode = .scaleAspectFit
let image = UIImage(named: "demo3")!
preview.image = image
preview.clipsToBounds = true
view.addSubview(preview)
preview.snp.makeConstraints { make in
make.top.equalTo(view.safeAreaLayoutGuide.snp.top)
make.centerX.equalToSuperview()
make.left.right.greaterThanOrEqualToSuperview().inset(padding).priority(.required)
make.height.lessThanOrEqualTo(300).priority(.required)
make.width.equalTo(preview.snp.height).multipliedBy(image.size.width / image.size.height).priority(.required)
}
< /code>
Это, кажется, хорошо работает для ландшафтных изображений (ширина длиннее высоты), но он разбивается на портретных изображениях: < /p>
Работает на изображениях ландшафта: < /p>
< /p>
falls в изображениях. Обратите внимание, как высота больше не является меньшей, чем MathanoRequalto (300)
Это было из -за того, что это было на основе, что это было на высоте. Ограничение: < /p>
Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(
"",
"= UIView:0x7f81b183dc30.right - 12.0>",
"
Подробнее здесь: https://stackoverflow.com/questions/794 ... norequalto