Изображение на весь экран в SwiftUI - PullRequest
0 голосов
/ 05 июня 2019

Я добавил изображение к своему телу в приложении SwiftUI и хочу, чтобы это изображение покрывало всю ширину устройства, но не проходило через него.

В body я возвращаю объект изображения:

var body: some View {
    Image("page-under-construction")
}

и изображение появляется, однако, оно слишком большое:

Я попытался установить рамку: это влияет на выделенные границы, но размер изображения не изменяется.
В комбинации я поиграл с .aspectRatio(contentMode:), который, похоже, не оказал никакого влияния на макет..

Как сделать так, чтобы изображение было эффективно на 100% ширины экрана?

Ответы [ 2 ]

5 голосов
/ 05 июня 2019

Причина, по которой .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.

1 голос
/ 05 июня 2019

Вы пробовали модификатор изменяемого размера?

struct ImageView: View {
var body: some View {
    Image("turtlerock")
    .resizable()
    .aspectRatio(contentMode: .fit)
}}

Примечание. Существует два режима содержимого: .fit и .fill

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...