我想添加动画,以便当我单击按钮时,TextEditor(在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()
}
}
}
}
此外,我确实尝试了在Button动作内部进行withAnimation
函数调用,如下所示,但这并不能解决问题。
if (!self.isAnimationOn) {
self.showMessageText.toggle()
}
答案 0 :(得分: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)
注意:您不需要两个动画(显式和隐式),在您的情况下它们是相同的,因此您可以保留其中任何一个。