这让我发疯了。在 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)
)
}
}
}
好的,事实证明,按如下方式添加.frame
调用允许背景图像根据需要显示。
(特别请注意,.frame
调用省略了height
参数。在之前多次尝试解决这个问题时,包括高度,导致不同的不良行为)
.background(
Image("bricks")
.resizable()
.scaledToFill()
.frame(width: geometry.size.width)
.edgesIgnoringSafeArea(.all)
)
对我来说,当我将背景图像包装在一个忽略安全区域的GeometryReader
中时,它起作用了,如下所示:
GeometryReader { geo in
Image(uiImage: Backgrounds.chalk)
.resizable(resizingMode: .tile)
.scaledToFill()
.frame(width: geo.size.width, height: geo.size.height)
}
.edgesIgnoringSafeArea(.all)
这对我来说是工作:
.background(
Image("bricks")
.resizable()
.scaledToFill()
.frame(width: geometry.size.width)
)
.edgesIgnoringSafeArea(.all)