- 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()
}
输出
广告