SwiftUI 教程

SwiftUI - 主页 SwiftUI - 概览 SwiftUI 与 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 - BLur 效果 SwiftUI - 阴影效果 SwiftUI - 悬停效果

SwiftUI - 动画

SwiftUI - 动画 SwiftUI - 创建动画 SwiftUI - 创建显式动画 SwiftUI - 多个动画 SwiftUI - 过渡 SwiftUI - 不对称过渡 SwiftUI - 自定义过渡

SwiftUI - 图像

SwiftUI - 图像 SwiftUI - 图像作为背景 SwiftUI - 旋转图像 SwiftUI - 媒体

SwiftUI - 视图布局

SwiftUI - 视图布局 SwiftUI - 视图大小 SwiftUI - 视图间距 SwiftUI - 视图填充

SwiftUI - UI 控件

SwiftUI - UI 控件 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 - 跨平台 UI SwiftUI - 数据 SwiftUI - 可访问性

SwiftUI - 框架集成

SwiftUI - 框架集成 SwiftUI - 与 UIKit 交互 SwiftUI - 创建 macOS 应用

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 中创建 Spring 动画

使用 .animation() 修饰符,我们还可以创建 spring 动画。在这里,我们在 .animation() 方法中传递 spring() 方法,因此视图像 spring 一样动画。

语法

以下是语法 −

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() 用于控制动画的速度。