出现键盘时,简单的 SwiftUI 背景图像一直在移动

Posted

技术标签:

【中文标题】出现键盘时,简单的 SwiftUI 背景图像一直在移动【英文标题】:Simple SwiftUI Background Image keeps moving when keyboard appears 【发布时间】:2020-09-23 13:15:17 【问题描述】:

这让我发疯了。在 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)
            )

【讨论】:

以上是关于出现键盘时,简单的 SwiftUI 背景图像一直在移动的主要内容,如果未能解决你的问题,请参考以下文章

在 SwiftUI 中重复图案图像作为背景?

出现键盘时滚动到 SwiftUI Scrollview 的最底部

Swift UI VStack 对齐。按下时使文本字段与键盘一起出现

SwiftUI - 如何防止工作表中的键盘向上推我的主 UI

SwiftUI 显示/关闭键盘

SwiftUI / iOS |在没有 NSNotification 的情况下获取键盘大小