- SwiftUI 教程
- SwiftUI - 首页
- SwiftUI - 概述
- SwiftUI vs UIKit
- SwiftUI 环境
- SwiftUI - 环境设置
- SwiftUI - 基本组件
- SwiftUI - 构建第一个应用程序
- SwiftUI 视图
- SwiftUI - 视图
- SwiftUI - 自定义文本视图
- SwiftUI - 自定义图像视图
- SwiftUI - 堆叠
- SwiftUI 绘制形状
- SwiftUI - 形状
- SwiftUI - 绘制线条
- SwiftUI - 绘制矩形
- SwiftUI - 绘制圆角矩形
- SwiftUI - 绘制三角形
- SwiftUI - 绘制圆形
- SwiftUI - 绘制星形
- SwiftUI - 绘制多边形
- SwiftUI - 绘制饼图
- SwiftUI - 使用内置形状
- SwiftUI - 文本
- SwiftUI - 文本视图
- SwiftUI - 文本输入和输出
- SwiftUI - 颜色
- SwiftUI - 颜色
- SwiftUI - 颜色选择器
- SwiftUI - 渐变
- SwiftUI - 调整颜色
- SwiftUI - 效果
- SwiftUI - 效果
- SwiftUI - 混合效果
- SwiftUI - 模糊效果
- SwiftUI - 阴影效果
- SwiftUI - 悬停效果
- SwiftUI - 动画
- SwiftUI - 动画
- SwiftUI - 创建动画
- SwiftUI - 创建显式动画
- SwiftUI - 多个动画
- SwiftUI - 转场
- SwiftUI - 非对称转场
- SwiftUI - 自定义转场
- SwiftUI - 图片
- SwiftUI - 图片
- SwiftUI - 图片作为背景
- SwiftUI - 旋转图片
- SwiftUI - 媒体
- SwiftUI - 视图布局
- SwiftUI - 视图布局
- SwiftUI - 视图大小
- SwiftUI - 视图间距
- SwiftUI - 视图填充
- SwiftUI - 列表和表格
- SwiftUI - 列表
- SwiftUI - 静态列表
- SwiftUI - 动态列表
- SwiftUI - 自定义列表
- SwiftUI - 表格
- SwiftUI - 表单
- SwiftUI - 表单
- SwiftUI - 将表单分成多个部分
- SwiftUI 有用资源
- SwiftUI - 有用资源
- SwiftUI - 讨论
SwiftUI - 创建动画
动画是创建具有吸引力的 SwiftUI 用户界面的最强大的工具。它以各种方式为视图添加动画。在 SwiftUI 中,我们可以通过两种方式创建动画:隐式动画和显式动画。隐式动画是在视图状态发生变化时自动处理动画的动画,而显式动画则用于显式创建动画。因此,本章我们将学习如何隐式创建动画。
`.animation()` 修饰符
在 SwiftUI 中,我们可以借助 `.animation()` 修饰符来应用动画。`.animation()` 修饰符用于将指定的动画应用于给定的视图,并且只要修饰符中指定的值发生变化,视图就会进行动画处理。这是一种隐式动画。
语法
以下是语法:
func animation<V>(_animation:Animation?, value: V) -> some View where V : Equatable
参数
此方法接受以下参数:
animation: 表示我们要应用于视图的动画。如果此参数的值为 nil,则视图不会进行动画处理。此参数的值可以是以下值之一:
default: 用于默认动画。
linear: 创建以恒定速度移动的动画。
easeIn: 创建一个动画,该动画开始缓慢,但当它到达运动结束时速度会加快。
easeOut: 创建一个动画,该动画开始快速,但当它到达运动结束时速度会减慢。
easeInOut: 创建一个具有 easeIn 和 easeOut 动画特性的动画。
bouncy: 创建弹跳动画。
smooth: 创建无弹跳动画。
snappy: 创建快速动画。
spring: 创建弹簧动画。
interactiveSpring: 创建持续时间较短的弹簧动画。
interpolatingSpring: 创建一个弹簧动画,该动画使用阻尼弹簧模型来生成 1 到 0 之间的数值。
value: 表示将触发动画的值。
在 SwiftUI 中创建基本动画
要创建基本动画,请按照以下步骤操作:
步骤 1:创建一个新项目 - 要创建一个新项目,请打开 Xcode,然后创建一个新的 SwiftUI 项目。
步骤 2:创建动画 - 现在,借助 `.animation()` 方法,我们将创建一个简单的动画。
示例
以下 SwiftUI 程序用于创建简单的动画。在这里,当我们点击按钮时,按钮的大小会增加。
import SwiftUI struct ContentView: View { @State private var size = 3.3 var body: some View { Button("Click Me"){ size += 3 }.frame(width: 100, height: 200) .background(Circle().fill(.mint)) .scaleEffect(size) .animation(.easeOut, value: size) } } #Preview { ContentView() }
输出
在 SwiftUI 中创建弹簧动画
使用 `.animation()` 修饰符,我们还可以创建弹簧动画。在这里,我们将 spring() 方法传递给 `.animation()` 方法,因此视图会像弹簧一样进行动画处理。
语法
以下是语法:
func spring( duration: TimeInterval = 0.5, bounce: Double = 0.0, blendDuration: Double = 0 ) -> Animation
参数
此方法接受以下参数,使用这些参数我们可以控制弹簧动画:
duration: 定义弹簧的振荡周期。
bounce: 定义弹簧的弹跳程度。这里 0 表示无弹跳,正值表示弹性增加,负值表示过度阻尼弹簧。
blendDuration: 定义插值变化的秒数。
示例
以下 SwiftUI 程序用于创建弹簧动画。
import SwiftUI struct ContentView: View { @State private var size = false var body: some View { VStack{ Rectangle() .stroke(.blue) .frame(width: size ? 200 : 100, height: size ? 90 : 50) .animation(.spring(duration: 0.2, bounce: 0.1, blendDuration: 1), value: size) Button("Click to See Magic"){ size.toggle() }.foregroundColor(.red) } } } #Preview { ContentView() }
输出
在 SwiftUI 中配置动画
借助以下方法,我们可以轻松配置动画:
名称 | 描述 |
---|---|
delay() | 它用于将动画的开始延迟给定数量的秒数。 |
repeatCount() | 它用于根据给定的次数重复指定的动画。 |
repeatForever() | 它用于无限重复指定的动画。 |
speed() | 它用于控制动画的速度。 |