Я пытаюсь обеспечить размер моего изображения не более 80 на 120:
Image(MY_IMAGE, bundle: nil)
.resizable()
.aspectRatio(contentMode: .fit)
.frame(maxWidth:120, maxHeight: 80)
Это работает, но по какой-то причине изображения, размер которых меньше разрешенного, например 40 на 60, масштабируются вверх.
Как я могу указать SwiftUI ограничить размер изображения до 80 на 120, если оно больше, но сохранить исходный размер, если оно меньше?
Вы можете использовать ViewThatFits
, указав немасштабированное изображение, а затем масштабированное.
В документации от до ViewThatfits
говорится:
ViewThatFits
оценивает свои дочерние представления в том порядке, в котором вы передаете их инициализатору. Он выбирает первого дочернего элемента, идеальный размер которого по ограниченным осям соответствует предложенному размеру.
ViewThatFits {
Image(MY_IMAGE, bundle: nil)
Image(MY_IMAGE, bundle: nil)
.resizable()
.scaledToFit()
}
.frame(maxWidth:120, maxHeight: 80)
.fixedSize()
Применяя .fixedSize()
, он занимает только то место, которое ему действительно необходимо. Таким образом, он не расширяется до максимальной ширины и высоты, если только это не требуется для изображения, уменьшенного до нужного размера.