SwiftUI 4.0 中 List 显示层级数据的子视图在展开和收起操作时无动画的解决

news/2024/11/6 11:28:11/

在这里插入图片描述

问题现象

在 SwiftUI 4.0(iOS 16+)中,一个超简单 List 视图层级子视图的收放操作竟然没有动画,这着实有点让人不爽:

在这里插入图片描述

从上图可以看到:我们在点击 List 子项时不仅毫无收放动画可言,而且在展开时还有卡顿,显得非常生硬。

以上代码在目前最新的 iOS 16.4.1(a) 系统中测试。

想知道如何重新找回美美哒的动画而且消除卡顿变得丝般顺滑吗?

Let‘s find out!!!😉


问题分析

1. 演示代码

首先,是非常简单的演示代码。

我们需要创建测试数据结构 Bookmark,注意它需要遵守 Identifiable 协议,且其中的 items 数组递归包含自身的定义以形成层级结构:

struct Bookmark: 

http://www.ppmy.cn/news/68086.html

相关文章

非常提效的7款原型工具推荐

原型图工具允许在开发前进行测试和迭代过程,可以帮助节省大量的开发时间和成本。在本文中,我们盘点了7个易于使用的原型图工具,以提高您的生产力! 1.即时设计 即时设计是一款免费的在线 UI 设计工具,无系统限制&…

Rust Atomics and Locks 阅读笔记 第二章 Atomics

原子操作(atomic operations)是多线程实现的基石,互斥锁(mutex)和条件变量(condition variable)都是通过原子操作来实现;std::sync::atomic包括了rust的内置原子操作类型&#xff08…

【C++入门编程常见问题】(小白必看)

常见问题 vsstudio快捷键 快速注释组合键 ctrlk ctrlc 取消注释快捷键 ctrlk ctrl u 支持垃圾回收机制 大多数面向对象编程语言具有垃圾回收机制。早期的C语言不具备垃圾回收机制,这意味着申请的内存资源在使用完成后,需要程序员自己释放。直到C11标…

搞懂 MyBatis 的事务管理机制

MyBatis 是一款优秀的持久层框架,相信很多 Java 后端开发人员对它都不会陌生。在实际项目开发中,事务管理是非常重要的一环,而 MyBatis 也为我们提供了便捷的事务管理机制。 本文将从以下方面详细解析 MyBatis 的事务管理机制: …

三十二、自定义镜像

1 、Docker镜像的原理 Docker镜像本质是什么? Docker中一个centos镜像为什么只有200MB,而一个centos操作系统的iso文件要几个G? Docker中一个tomcat镜像为什么有500MB,而一个tomcat安装包只有10多MB? 操作系统组成部分: 计算机组成原理 进程调度子…

Java项目中常用的SON转换方式及示例

摘要: JSON(JavaScript Object Notation)是一种常用的数据交换格式,用于在不同的应用程序之间传输和存储数据。在Java开发中,我们经常需要将Java对象转换为JSON格式,或者将JSON转换回Java对象。本文将介绍几种常见的JS…

卫龙上市后首份财报:营收净利双降、去年净利下滑8成

当你吃辣条的时候,你在吃什么? 味道?口感?还是童年的记忆? 近日,卫龙美味全球控股有限公司(下称“卫龙”)发布了上市后的首份年报。 卫龙是一家辣味休闲食品的企业,根…

如何在 Mac 或 Windows 上将 PDF 转换为 Word 而不丢失格式

PDF 有无数的优点,但它不能像 Microsoft Word 文档那样容易编辑。如果您没有价格总是很高的 PDF 编辑器,您将无法根据需要编辑或使用 PDF 源。但是我们可以将PDF转成Word,方便编辑。 有很多解决方案可用于在 Mac 上将 PDF 转换为可编辑的 W…