使用Toggle动画化视图的隐藏/显示

时间:2020-11-08 10:15:02

标签: ios swift iphone swiftui

这是我的代码

@State private var show = false

...

Form {
    Toggle(isOn: $show, label: { Text("Show the text?") })
    if show {
        Text("Hello World")
    }
}

使用具有动作self.show.toggle()的按钮,我可以使用 withAnimation{}语句,但不确定如何使用切换键。

2 个答案:

答案 0 :(得分:1)

这可以为您提供更好的动画效果

  Form
  {
    
    Toggle(isOn: $show, label: { Text("Show the text?") })
    
    Group
    {
        if show { Text("Hello World") } else { EmptyView() }
    }
 }
   .animation(.easeOut)

答案 1 :(得分:0)

您可以像这样将.animation(.easeOut)修饰符添加到“文本”视图中-

@State private var show = false

...

Form {
    Toggle(isOn: $show, label: { Text("Show the text?") })
    if show {
        Text("Hello World")
           .animation(.easeOut)
    }
}

通过添加此修饰符,将对应用于视图的所有更改进行动画处理。

Apple's basic animation tutorial-在视图上使用animation(_ :)修饰符时,SwiftUI会为视图的可设置动画的属性设置动画。视图的颜色,不透明度,旋转度,大小和其他属性都可以设置动画。

您还可以为视图的特定部分或视图的显示方式设置动画,例如,将颜色设置为不透明度为0的黑色,如果show == true设置为1(完全可见), / p>

@State private var show = false

...

Form {
    Toggle(isOn: $show, label: { Text("Show the text?") })
    if show {
        Text("Hello World")
           .foregroundColor(show ? Color.black : Color.black.opacity(0)) // if show is true than foreground color is black, if show is false than color is black with opacity 0.0 (not visible)
           .animation(.easeOut)
    }
}