Причина, по которой .aspectRatio(contentMode:)
не оказал влияния на макет, заключается в том, что вы не сделали изображение с изменяемым размером с resizeable()
.
Выполнение
var body: some View {
Image("page-under-construction")
.resizable()
.aspectRatio(contentMode: .fill)
}
приведет к тому, что изображение будет иметь ширину экрана, но соотношение сторон изображения не будет поддерживаться.Чтобы сохранить соотношение сторон, выполните
var body: some View {
Image("page-under-construction")
.resizable()
.aspectRatio(UIImage(named: "page-under-construction")!.size, contentMode: .fill)
}
. Используется версия .aspectRatio(aspectRatio: CGSize, contentMode: ContentMode)
метода, который обсуждался в оригинальном вопросе с фиктивным UIImage, для доступа к исходному соотношению сторон изображения.
Примечание:Необязательный явно развернутый необязательный параметр (!
) не должен вызывать проблем, если вы не уверены, является ли имя образа допустимым из папки «Ресурсы».См. этот пост для полного обзора опций Swift.