设置SwiftUI文本编辑器文本的动画

设置SwiftUI文本编辑器文本的动画,swift,swiftui,text-editor,ios14,swiftui-animation,Swift,Swiftui,Text Editor,Ios14,Swiftui Animation,我想添加动画,这样当我点击一个按钮时,我的文本编辑器(在iOS 14中)中的文本会慢慢淡出(比如说,持续时间为1.5) 这是我正在使用的代码,但无法使文本淡出。你知道我做错了什么吗 struct FadeTextFromTextEditor: View { @State private var isAnimationOn = true @State private var text: String = "" @State private var resetT

我想添加动画,这样当我点击一个按钮时,我的文本编辑器(在iOS 14中)中的文本会慢慢淡出(比如说,持续时间为1.5)

这是我正在使用的代码,但无法使文本淡出。你知道我做错了什么吗

struct FadeTextFromTextEditor: View {
   @State private var isAnimationOn = true
   @State private var text: String = ""
   @State private var resetText = true

    var body: some View {
        VStack(alignment: .center) {
             if #available(iOS 14.0, *)
             {
                  TextEditor(text: $text)
                  .border(Color.black, width: 1)
                  .padding(.horizontal, 5)
                  .padding(.vertical, 5)
                  .animation(.easeOut(duration: 1.5), value: resetText)
             }
            Button(action : {
                // If bool for fading the text out is set to true, use animation on the text
                if (self.isAnimationOn) {
                    withAnimation(.easeOut(duration: 1.5))
                    {
                        self.resetText.toggle()
                    }
                }
            })
            {
                Text("Animate")
                    .font(.headline)
                    .frame(width:125, height: 30)
                    .padding()
            }
        }
    }
}
此外,我也尝试过在按钮的动作中调用
with animation
函数,如图所示,但这并没有解决问题

        if (!self.isAnimationOn) {
             self.showMessageText.toggle()
        }

我不确定我是否正确理解了您的期望,但您可以通过应用
.opacity
修改器来淡出,如下所示

TextEditor(text: $text).opacity(resetText ? 1 : 0)    // << here !!
  .border(Color.black, width: 1)
  .padding(.horizontal, 5)
  .padding(.vertical, 5)
  .animation(.easeOut(duration: 1.5), value: resetText)

TextEditor(text:$text).opacity(resetText?1:0)/不确定我是否正确理解了您的期望,但您可以通过应用
.opacity
修饰符来淡出,如下所示

TextEditor(text: $text).opacity(resetText ? 1 : 0)    // << here !!
  .border(Color.black, width: 1)
  .padding(.horizontal, 5)
  .padding(.vertical, 5)
  .animation(.easeOut(duration: 1.5), value: resetText)
TextEditor(text:$text).不透明度(resetText?1:0)//