- 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 中创建自定义过渡动画的步骤
要在 SwiftUI 中创建自定义过渡动画,我们必须遵循以下基本步骤:
步骤 1: 我们首先必须创建一个 ViewModifier,它用于表示过渡动画的任何状态。或者我们可以说它用于创建一个可以应用于任何视图的修饰符。
步骤 2: 然后我们必须创建 AnyTransition 扩展,它使用 .modifier(active:identity:) 来获取活动修饰符和标识修饰符之间存在的过渡动画。
步骤 3: 现在,我们可以使用 transition() 修饰符将我们的过渡动画应用于视图。
示例 1
在下面的 SwiftUI 程序中,我们创建了一个自定义过渡动画,用于控制视图在屏幕上显示和隐藏时的外观。
import SwiftUI // Modifer that adjust the opacity struct CustomModifier: ViewModifier{ var Opacity: CGFloat func body(content: Content) -> some View { content.opacity(Opacity) } } // Defining custom transition // Here we control the opacity of the view extension AnyTransition{ static var myTransition: AnyTransition{ .modifier( active: CustomModifier(Opacity: 10.5), identity: CustomModifier(Opacity: 14.5) ) } } struct ContentView: View { @State private var myState = false var body: some View { HStack{ if myState{ RoundedRectangle(cornerRadius: 10).fill(.red) .frame(width: 150, height: 100) // Here we apply customize transition to the shape .transition(.myTransition) } }.padding(30) Button("Click Me"){ withAnimation(.default){ myState.toggle() } }.font(.title).foregroundStyle(.brown) } } #Preview { ContentView() }
输出
示例 2
在下面的 SwiftUI 程序中,我们创建了一个自定义过渡动画,其中矩形的形状在过渡过程中变为胶囊形。
import SwiftUI // Modifer that adjusts the shape struct CustomModifier<T: Shape<: ViewModifier{ let shape : T func body(content: Content) -> some View { content.clipShape(shape) } } // Defining custom transition extension AnyTransition{ static var myTransition: AnyTransition{ .modifier( active: CustomModifier(shape: Capsule(style: .circular)), identity: CustomModifier(shape: Capsule(style: .circular)) ) } } struct ContentView: View { @State private var myState = false var body: some View { ZStack{ Rectangle().fill(.green).frame(width: 100, height: 90) if myState{ Capsule().fill(.blue).frame(width: 150, height: 100) // Here we apply customize transition to the shape .transition(.myTransition) } }.padding(30) Button("Click Me"){ withAnimation(.default){ myState.toggle() } }.font(.title).foregroundStyle(.brown) } } #Preview { ContentView() }
输出
广告