#swiftui #ios14 #xcode12
#swiftui #ios14 #xcode12
Вопрос:
Это сводит меня с ума. Похоже, в iOS14 появилось новое поведение для обработки фоновых изображений.
Желаемый эффект: фиксированное фоновое изображение, которое заполняет экран, игнорируя безопасные области, и полностью статично, когда появляется клавиатура. Вместо этого клавиатура заставляет изображение скользить вправо, даже если клавиатура поднимается снизу (??).
Это ошибка SwiftUI? Любые идеи / обходные пути приветствуются.
Код для создания этого очень маленький:
import SwiftUI
struct ContentView: View {
@State var name = "Name"
var body: some View {
GeometryReader { geometry in
VStack {
TextField("Placeholder", text: $name)
}
.frame(width: geometry.size.width, height: geometry.size.height)
.background(
Image("bricks")
.resizable()
.scaledToFill()
.edgesIgnoringSafeArea(.all)
)
}
}
}
Ответ №1:
Хорошо, получается, что добавление .frame
вызова следующим образом позволяет отображать фоновое изображение по желанию.
(Обратите особое внимание, что .frame
вызов опускает height
аргумент. Во многих предыдущих попытках решить эту проблему была включена высота, что приводило к другому нежелательному поведению)
.background(
Image("bricks")
.resizable()
.scaledToFill()
.frame(width: geometry.size.width)
.edgesIgnoringSafeArea(.all)
)
Ответ №2:
Для меня это сработало, когда я обернул фоновое изображение внутри a GeometryReader
, которое игнорирует безопасную область следующим образом:
GeometryReader { geo in
Image(uiImage: Backgrounds.chalk)
.resizable(resizingMode: .tile)
.scaledToFill()
.frame(width: geo.size.width, height: geo.size.height)
}
.edgesIgnoringSafeArea(.all)
Ответ №3:
Это работа для меня:
.background(
Image("bricks")
.resizable()
.scaledToFill()
.frame(width: geometry.size.width)
)
.edgesIgnoringSafeArea(.all)