返回

从 modifiers 的顺序到 Animations - part3

IOS

在上一节课中,我们学习了 modifiers 的顺序会如何影响视图。因此,我们写过这样的代码:

Text("Hello World!")
    .frame(width: 200, height: 200)
    .background(Color.red)

这是因为如果我们在调整 frame 之前给背景上色的话,只有原始的区域被上色,而不是之后 frame 调整后的区域。

现在,让我们来看一下 animations。Animations 允许我们在视图之间创建平滑的过渡。为了使用 animations,我们需要使用 withAnimation() 函数。withAnimation() 函数接受一个 animation 参数,该参数指定动画的持续时间、延迟和曲线。

Text("Hello World!")
    .frame(width: 200, height: 200)
    .background(Color.red)
    .animation(.easeInOut(duration: 1))

上面的代码会在视图之间创建一个平滑的过渡。动画的持续时间为 1 秒,曲线为 easeInOut。

我们还可以使用 transition() 函数来创建更复杂的动画效果。transition() 函数接受一个 transition 参数,该参数指定动画的类型和持续时间。

Text("Hello World!")
    .frame(width: 200, height: 200)
    .background(Color.red)
    .transition(.slide)

上面的代码会在视图之间创建一个滑动动画。动画的持续时间为默认值 0.35 秒。

我们还可以使用 withAnimation() 函数和 transition() 函数来创建更复杂的动画效果。例如,我们可以使用下面的代码来创建一个带有延迟的滑动动画:

Text("Hello World!")
    .frame(width: 200, height: 200)
    .background(Color.red)
    .transition(.slide)
    .animation(.easeInOut(duration: 1).delay(0.5))

上面的代码会在视图之间创建一个带有延迟的滑动动画。动画的持续时间为 1 秒,延迟为 0.5 秒,曲线为 easeInOut。

我希望这篇文章能帮助你了解如何在 SwiftUI 中使用 animations 和 modifiers。如果你有任何问题,请随时留言。