swiftUI 中的浮动标签文本字段

问题描述

我是 swiftUI 的新手。我想要像这样带有浮动标签的 TextFeild。我用matchedGeometryEffect() 尝试过,但我没有得到足够的。不知道是什么bug它在没有动画的情况下工作完美。

enter image description here

当我添加动画时,情况会变得更糟

enter image description here

这是我的代码

struct TextFeildView: View {
    
    private var placeHolder: String = ""
    @Binding private var text: String
    @Namespace private var titleNameSpace
    
    init(_ placeHolder: String,text: Binding<String> ) {
        self.placeHolder = placeHolder
        self._text = text
    }
    
    var body: some View {
        vstack() {
            HStack {
                Text(placeHolder)
                    .hidden(text == "")
                    .animation(.default)
                    .matchedGeometryEffect(id: "titleNameSpace",in: titleNameSpace)
                Spacer()
            }.padding(.horizontal,32)
            vstack {
                ZStack(alignment: .leading) {
                    Text(placeHolder)
                        .hidden(text != "")
                        .animation(.default)
                        .matchedGeometryEffect(id: "titleNameSpace",in: titleNameSpace)
                    TextField("",text: $text)
                }
                Color.gray
                    .frame(width: screenFrame.Width - 64,height: 1,alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/)
            }.padding(.horizontal,32)
        }
    }
}

struct TextFeildView_orignal: View {
    @State var text : String = ""
    var body: some View {
        TextFeildView("PlaceHolder",text: $text)
    }
}

struct TextFeildView_Previews: PreviewProvider {
    static var previews: some View {
        TextFeildView_orignal()
    }
}

请帮帮我

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...