SwiftUI动画之几何匹配

SwiftUI动画之几何匹配

记录一下 日常开发中经常使用到的滑块功能 如何同工几何匹配快速制作点击动画

import SwiftUI

struct MatchedGeometryEffestExamle: View {
    let categories = ["Home", "Popular", "Saved"]
    @State var selecedTitle = "Home"
    /// 使用@Namespace 来声明对应命名空间,给系统使用
    @Namespace private var namespace
    
    var body: some View {
        HStack {
            ForEach(categories, id: \.self) { title in
                VStack(content: {


                    Text(title)
                        .font(.headline)
                        .frame(maxWidth: .infinity)
                        .frame(height: 35)
                        .onTapGesture {
                            withTransaction(Transaction.init(animation: .easeInOut)) {
                                selecedTitle = title
                            }
                        }
                        .foregroundColor(selecedTitle == title ? .red : .black)
                    if selecedTitle == title {
                        RoundedRectangle(cornerRadius: 10)
                            .fill(.red)
                            /// 通过匹配id 和 namespace 系统做动画的时候就可以知道这是同一个对象,然后就自动给先后出现的为宜添加对应的效果
                            .matchedGeometryEffect(id: "MatchedGeometryEffestExamle_RoundedRectangle", in: namespace)
                            .frame(width: 35, height: 2)
                           
                    }
                    
                })
                    
            }
        }.padding()
    }
}

#Preview {
    MatchedGeometryEffestExamle()
}

效果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/462620.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Artemis Finance引领Metis流动性质押,并启动积分空投活动

在以太坊可扩展性解决方案中, Optimism、Arbitrum等Layer2链主要面临两个问题:欺诈/有效性证明以及去中心化排序器Sequencers。在实际的发展过程中,Optimism或Arbitrum等Layer2链仍然侧重于在欺诈证明和有效性证明方面进行努力,在…

MATLAB 矩阵

【MATLAB】(四)MATLAB在线性代数中的应用_线性代数在matlab中的应用-CSDN博客 矩阵的秩 rank rank(a) 矩阵的逆矩阵 inv inv(a) 矩阵的特征值eig和特征向量D [V,D]eig(a) 特征值 deig(a) 特征向量D [V…

【 c 语言 】指针入门

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:C语言 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步&…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Swiper)

滑块视图容器,提供子组件滑动轮播显示的能力。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 可以包含子组件。 说明: 子组件类型:系统组件和自定义组…

Python基础入门 --- 4.循环语句

文章目录 Python基础入门第四章:4.1 while循环语句4.1.1 while循环的嵌套4.2 for循环语句4.2.1 range语句4.2.2 变量作用域4.2.3 for循环的嵌套应用 4.3 循环中断 continue和break Python基础入门 第四章: 4.1 while循环语句 语法结构: w…

springboot多模块下swaggar界面出现异常(Knife4j文档请求异常)或者界面不报错但是没有显示任何信息

继上一篇博文,我们解决了多模块下扫描不到子模块的原因,建议先看上一个博客了解项目结构: springboot 多模块启动报错Field XXX required a bean of type XXX that could not be found. 接下来我们来解决swaggar异常的原因,我们成功启动项目…

【IC设计】Verilog线性序列机点灯案例(三)(小梅哥课程)

声明:案例和代码来自小梅哥课程,本人仅对知识点做做笔记,如有学习需要请支持官方正版。 文章目录 该系列目录设计目标设计思路RTL及Testbench代码RTL代码Testbench代码 仿真结果上板视频 该系列目录 Verilog线性序列机点灯案例(一)&#xff…

【Hadoop大数据技术】——MapReduce分布式计算框架(学习笔记)

📖 前言:MapReduce是Hadoop系统核心组件之一,它是一种可用于大数据并行处理的计算模型、框架和平台,主要解决海量数据的计算问题,是目前分布式计算模型中应用较为广泛的一种。 目录 🕒 1. MapReduce概述&am…

cool 中的Midway ----node.js的TypeORM的使用

1.介绍 TypeORM | Midway TypeORM 是 node.js 现有社区最成熟的对象关系映射器(ORM )。本文介绍如何在 Midway 中使用 TypeORM 相关信息: 描述可用于标准项目✅可用于 Serverless✅可用于一体化✅包含独立主框架❌包含独立日志❌ 和老写…

实现HBase表和RDB表的转化(附Java源码资源)

实现HBase表和RDB表的转化 一、引入 转化为HBase表的三大来源:RDB Table、Client API、Files 如何构造通用性的代码模板实现向HBase表的转换,是一个值得考虑的问题。这篇文章着重讲解RDB表向HBase表的转换。 首先,我们需要分别构造rdb和hba…

JUnit 面试题及答案整理,最新面试题

JUnit中的断言(Assert)有哪些类型? JUnit提供了多种断言类型来帮助测试代码的正确性。常见的断言类型包括: 1、assertEquals: 用于检查两个值是否相等。如果不相等,测试失败。 2、assertTrue和assertFal…

Midjourney订阅攻略

订阅Midjourney的攻略主要包括以下几个步骤: 访问Midjourney官网:首先,你需要访问Midjourney的官方网站。你可以通过搜索引擎找到它,或者通过社交媒体、论坛等渠道获取官方网站链接。了解订阅选项:在官网上&#xff0…

HarmonyOS NEXT应用开发—视频全屏切换案例

介绍 本示例介绍了Video组件和ohos.window接口实现媒体全屏的功能。 该场景多用于首页瀑布流媒体播放等。 效果图预览 使用说明: 点击全屏按钮,横屏媒体窗口。点击恢复窗口按钮,恢复媒体窗口。 实现步骤 在Video组件内调用 onFullscreen…

并发编程之join 方法的详细解析

3.8 join 方法详解 为什么需要 join 下面的代码执行,打印 r 是什么? static int r 0; public static void main(String[] args) throws InterruptedException {test1(); } private static void test1() throws InterruptedException {log.debug(&quo…

CSS学习(2)-盒子模型

1. CSS 长度单位 px :像素。em :相对元素 font-size 的倍数。rem :相对根字体大小,html标签就是根。% :相对父元素计算。 注意: CSS 中设置长度,必须加单位,否则样式无效&#xff…

《JAVA与模式》之简单工厂模式

系列文章目录 文章目录 系列文章目录前言一、简单工厂模式二、简单工厂模式的优缺点前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 在阎宏博士的《JAVA与模式》一…

如何在IDEA 中设置背景图片

在IDEA 中设置背景图片,可以按照以下步骤操作: 1、打开 IntelliJ IDEA 软件,进入代码编辑主界面。 点击编辑窗口上方的“File”菜单项。 2、在下拉子菜单中,选择“Settings”选项(如果你使用的是 macOS,可…

双指针、bfs与图论

1238. 日志统计 - AcWing题库 import java.util.*;class PII implements Comparable<PII>{int x, y;public PII(int x, int y){this.x x;this.y y;}public int compareTo(PII o){return Integer.compare(x, o.x);} }public class Main{static int N 100010, D, K;st…

Android 面试题及答案整理,最新面试题

Android中Intent的作用及分类 Intent在Android中用作组件之间传递信息&#xff0c;它可以用于启动活动(activity)、服务(service)和发送广播(broadcast)。Intent主要分为显式Intent和隐式Intent两大类。 1、显式Intent&#xff1a; 直接指定了要启动的组件名称&#xff08;比如…

Lua中文语言编程源码-第一节,更改llex.c词法分析器模块, 使Lua支持中文关键词。

源码已经更新在CSDN的码库里&#xff1a; git clone https://gitcode.com/funsion/CLua.git 在src文件夹下的llex.c&#xff0c;是Lua的词法分析器模块。 增加中文保留字标识符列表&#xff0c;保留英文保留字标识符列表。 搜索“ORDER RESERVED”&#xff0c;将原始代码 …