- 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 中,我们可以同时对视图的多个属性(例如缩放、不透明度、旋转等)进行动画处理。在这里,我们将多个状态更改(用于多个属性)包装在同一个修饰符中,无论是 `.withAnimation()` 还是 `.animation()`。这两个修饰符都可以与单个或多个动画一起使用。使用这些多个动画,我们还可以为所有类型的视图创建各种效果。
SwiftUI 中的多个隐式动画
我们可以通过对每个属性使用 `.animation()` 修饰符来隐式地为多个属性设置动画。当属性更改状态时,它会对指定的属性进行动画处理。
示例
在下面的程序中,我们将两种隐式类型的动画应用于椭圆。因此,当我们单击按钮时,椭圆会同时开始增大尺寸并旋转。
import SwiftUI struct ContentView: View { @State private var scale = false @State private var rotate = false var body: some View { VStack{ Ellipse() .fill(.orange) .frame(width: 100, height: 110) .rotationEffect(.degrees(rotate ? 260 : 0)) .scaleEffect(scale ? 3 : 1) .animation(.easeInOut(duration: 1), value: scale) .animation(.easeIn(duration: 1), value: rotate) Button("Click Me"){ scale.toggle() rotate.toggle() }.font(.title2) } } } #Preview { ContentView() }
输出
SwiftUI 中的多个显式动画
我们可以通过使用 `.withAnimation()` 修饰符来显式地为多个属性设置动画,其中此修饰符的闭包包含指定属性的所有状态更改。示例
在下面的程序中,我们使用两种不同的动画(旋转和移动)对文本“TutorialsPoint”进行动画处理。在这里,当我们单击按钮时,文本向右移动,1 秒后开始旋转。
import SwiftUI struct ContentView: View { @State private var move = false @State private var rotate = false var body: some View { VStack{ Text("TutorialsPoint") .font(.headline) .foregroundStyle(.red) .bold() .rotationEffect(.degrees(rotate ? 260 : 0)) .offset(x: move ? 150 : 0) Button("Click Me"){ withAnimation(.easeIn(duration: 1)){ move.toggle() } withAnimation(.easeOut(duration:1).delay(0.5)){ rotate.toggle() } }.font(.title2) } } } #Preview { ContentView() }
输出
SwiftUI 中多个视图的动画
在 SwiftUI 中,我们可以使用 `.animation()` 和 `.withAnimation()` 修饰符同时对多个视图进行动画处理。我们可以对视图使用相同的 state 变量或不同的变量。现在让我们讨论如何通过以下示例来为多个视图设置动画。
示例
下面的 SwiftUI 程序对两个视图进行动画处理:矩形视图和文本视图。这里,两个视图都使用相同的 state 变量,这些状态由 `.withAnimation()` 修饰符控制。缩放效果应用于矩形视图,旋转效果应用于文本视图。
import SwiftUI struct ContentView: View { @State private var myState = false var body: some View { ZStack{ // Animating rectangle view Rectangle().fill(.yellow).frame(width: 150, height: 50) // Here we apply scaling effect on the rectangle .scaleEffect(myState ? 0.8 : 2) // Animating Text View Text("TutorialsPoint").font(.largeTitle).foregroundStyle(.green) // Here we apply rotation effect on the text .rotationEffect(.degrees(myState ? 360 : 0)) }.padding(30) Button("Click Me"){ withAnimation(.easeInOut(duration: 1.4)){ myState.toggle() } }.font(.title) } } #Preview { ContentView() }
输出
广告