私はswiftUIが初めてです。そして、このようなフローティング ラベルの TextFeild が必要です。MatchedGeometryEffect() で試してみましたが、十分ではありませんでした。何がバグなのかわからない。アニメーションなしで完璧に機能しています。
アニメーションを追加すると、このように悪化します
これは私のコードです
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()
}
}
私を助けてください