首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

优化在 SwiftUI List 中显示大数据集的响应效率

同样一段代码,在不同数据量级下的响应表现可能会有云泥之别。...找寻问题原因 或许有人会认为,毕竟数据量较大,进入列表视图有一定的延迟是正常的。但即使在 SwiftUI 的效能并非十分优秀的今天,我们仍然可以做到以更小的卡顿进入一个数倍于当面数据量的列表视图。...在 SwiftUI 视图的生命周期研究[3] 一文中,我对 List 如何对子视图的显示进行优化做了一定的介绍。...解决方案二 在认识到 ScrollViewProxy 以及在 ForEach 中使用 id 修饰符两者的异常表现后,我们只能尝试通过调用底层的方式来获得更加完美的效果。...获取若干最新数据,将数据逆向添加入数组 在列表显示后率先移动到最底端(取消动画) 通过 refreshable 调用下一批数据,并继续逆向添加入数组 用类似的思路,还可以实现向下增量读取或者两端增量读取

9.3K20

Ask Apple 2022 与 SwiftUI 有关的问答(下)

因此,如果你正在创建一个视图来显示可滚动的内容,并可能进行选择操作,那么在 iOS 和 macOS 上使用 List 将有最好的体验。...Table 中上下文菜单Q:如果我在 TABLE 上添加了一个上下文菜单,我如何确定哪一行导致了菜单的显示(无需选择该行)?...Swiftcord[12] 的代码展示了如何在 SwiftUI 下实现倒置列表。阅读 优化在 SwiftUI List 中显示大数据集的响应效率[13] 一文,了解苹果工程师推荐的方法。...对于可能造成卡顿的图片数据,放弃从托管对象的图片关系中直接获取的方式。在 Cell 视图中,通过创建 request 从私有上下文中提取数据并转换成图片。.../[12] Swiftcord: https://github.com/SwiftcordApp/Swiftcord[13] 优化在 SwiftUI List 中显示大数据集的响应效率: https:/

14.8K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SwiftUI案例:天气

    SwiftUI案例:天气 效果 目标 实现静态的仿iOS天气APP程序 文件与配置 外观配置 外观配置需要从 '代码' 中下载文件并提取对应的图片 需要配置在 Assets.xcassets...文件中 需要配置在 SpriteFiles/Assets.xcassets 文件中 动态图片导入 在工作区的项目文件夹下创建名为 SpriteFiles 的 Group 并在其中依次导入...RainFall.sks RainFallLanding.sks 创建View视图 在工作区的项目文件夹下创建名为 View 的 Group 并在其中依次创建 Home.swift CustomStackView.swift...CustomCorner.swift WeatherDataView.swift 视图文件 创建Model模板 在工作区的项目文件夹下创建名为 Model 的 Group 并在其中创建 Forecast.swift...{ HStack(spacing: 15) { //从每个cast对象中得到它的数据值并显式地调用它

    4.8K21

    Ask Apple 2022 与 SwiftUI 有关的问答(上)

    A:如果在同一个视图中,有多个相互关联的 @State 属性,将他们提取到一个结构中或许是好的选择。将他们提取到 view model 中也是一种策略,但不是必须的。...DocumentGroupQ:在 macOS 上使用 SwiftUI 应用生命周期和 DocumentGroup 时,如果应用仅为数据阅读器,是否可以禁止创建新文件?...只允许打开该内容类型的文件,但不能进行编辑。MVVMQ:在 UIKit 时代,MVVM 是一种常见的架构,视图显示的数据来自一个单独的 viewModel 类。...A:如果你在 iOS 上使用 UITextField 遇到性能问题,你可以尝试避免每个视图都是 UITextField ,默认渲染为 Text ,当文本被点击时动态切换为 UITextField 。...如果发生这种情况,克服这种情况的技术是在外部存储上保存一些数据,只在内存中保留最相关的数据和一个标识符,以便能够完全取回其余的数据。

    12.3K20

    在 iOS 16 中用 SwiftUI Charts 创建一个折线图

    前言 苹果在 WWWDC 2022 上推出了 SwiftUI 图表,这使得在 SwiftUI 视图中创建图表变得异常简单。图表是以丰富的格式呈现可视化数据的一种很好的方式,而且易于理解。...从包含一周的步数的数据开始,类似于 在SwiftUI中创建折线图 中使用的数据。...SwiftUI Charts 中创建一个包含两个系列步数数据的折线图 第一次尝试在 SwiftUI Charts 中创建一个包含两个系列步数数据的折线图 显示步数系列 在折线图中显示多个基于工作日的步数系列...最初尝试在折线图中显示多组数据的问题是X轴使用了日期。...图表中带有两个系列的步数数据的折线图 SwiftUI 图表中带有两个系列的步数数据的折线图 结论 在 SwiftUI Charts 中还有很多东西可以探索。

    3.7K20

    在iOS 16中用SwiftUI Charts创建一个折线图

    在iOS 16中用SwiftUI Charts创建一个折线图 苹果在WWWDC 2022上推出了SwiftUI图表,这使得在SwiftUI视图中创建图表变得异常简单。...在SwiftUI中创建折线图 How to create a Bar Chart in SwiftUI 简单折线图 从包含一周的步数的数据开始,类似于在SwiftUI中创建折线图中使用的数据。...SwiftUI 图表中使折线图可访问性 在 SwiftUI 图表中使折线图可访问性 为折线图添加多个数据序列 折线图是比较两个不同系列数据的好方法。...SwiftUI Charts 中创建一个包含两个系列步数数据的折线图 在折线图中显示多个基于工作日的步数系列 最初尝试在折线图中显示多组数据的问题是X轴使用了日期。...图表中带有两个系列的步数数据的折线图 结论 在SwiftUI Charts中还有很多东西可以探索。

    3.5K20

    我庆幸果断放弃了SwiftUI:它还不够成熟

    他发表了一篇博客,总结了尝试并放弃 SwiftUI 的过程,这篇文章在 Hacker News 上引发了开发者们的大量讨论: “恕我直言,SwiftUI 是一个很好的机会,但苹果公司对它投资不足。...考虑到配套创作工具 CiderKit 在发展成熟的过程中也变得愈发复杂,再加上创建各种窗口和 UI 元素的实际需求,我决定尝试用用 SwiftUI。...跟其他创作工具一样,这款检查器的功能就是选定一个对象,并把可检查的对应属性显示在一个临时的用户界面元素当中。...它的显示效果就是主窗口中的一张表,出于学习的目的,我当然还是想继续用 SwiftUI 喽。毕竟初次尝试肯定会有种种问题,应该再给它一次机会。...我刚开始以为是因为地图编辑器的 SpriteKit 主视图仍在后台渲染。所以我尝试在工作表显示出来后禁用渲染,但结果没有任何改变。 变更从一种环境传播至另一环境时,我也遇到了类似的延迟问题。

    5.1K20

    SwiftUI 与 Core Data —— 数据获取

    本文中我们将探讨在 SwiftUI 视图中批量获取 Core Data 数据的方式,并尝试创建一个可以使用 mock 数据的 FetchRequest。...我也做了不少的尝试,但最终发现似乎 FetchRequest 仍是当前 SwiftUI 中的最优解。...NSFetchedResultsControllerDelegate 协议实例中实现方法,以实现在屏幕上显示数据的目的。...如此一来,在将视图提取到一个单独的 Package 时,仍需导入包含具体 Core Data 托管对象定义的库,无法做到完全的解耦。...数据( 因为 WrappedID 的存在,我们可以很容易创建 mock 数据 )无论上述哪种方式,开发者都需放弃使用 SwiftUI 原生的 Section 功能,在惰性容器中,根据提供的附加数据自行对数据做分段显示处理

    4.7K30

    【C++医学影像PACS】CT检查中的三维重建技术

    它补偿了CT只能提供横断面的缺憾,适用于需要多角度,多方位观察病灶和器官的时候。 第六,曲面重建。它补偿了多平面重建,只提供单纯断面图像的缺憾,使用于显示形状多变的器官以及组织结构。...3.VRT(容积成像) 不需要重建物体的表面几何信息,通过计算体素的阻光度、颜色、梯度等,然后直接把三维灰度数据投影到二维屏幕上,在投影时累计半透明体素对光线的透射吸收作用。它是目前的常用方法。...它适用于胃肠道、呼吸道和血管等器官的内表面及其腔内异物、新生物、钙化、狭窄等病变。 5.MPR(多平面成像) 把体素重新排列,在二维屏幕上显示任意方向上的断面。...它补偿了CT只提供横断面图像的缺憾,适用于任何需要从多角度、多方位观察的病灶和器官。它有显示快捷、任意断面、CT值可测的好处。...6.CPR(曲面成像) 把体素重新排列,在三维空间内通过绘制出同一平面上二维的断面。它补偿了MPR只提供单纯断面图像的缺憾,适用于显示形状多变的器官及其组织结构。

    53920

    Firebase Remote Config

    这样一来,您可以先验证改进,然后再将其推向整个用户群 工作原理 Remote Config 包括一个客户端库,通过在 Firebase 控制台,可以设置相关参数与条件,在适当的时机触发相关逻辑处理,...维持良好的应用体验 建议向提取逻辑添加实时 Remote Config 功能,以便在有新的 Remote Config 参数值发布时立即自动提取这些最新的值。...,存储的任何模板的最长有效期为 90 天 Remote Config 默认和建议的生产提取间隔为 12 小时,这意味着无论实际上调用了多少次提取方法,在 12 小时的时间段内最多从后端提取一次配置 Remote...以下规则用于确定在某个特定时间点从 Remote Config 服务器提取哪个值 如果哪个条件值为 true,则读取对应的值 如果多个条件均为 true,则读取 Firebase 控制台显示的第一个..._43.png 搜索项目的参数键、参数值和条件 Snip20230919_44.png Remote Config 模板和版本控制 在 Firebase 控制台,以图表形式显示版本发布 Snip20230919

    68510

    【愚公系列】《AIGC辅助软件开发》013-AI辅助客户端编程:AI辅助 iOS 应用开发

    通过对这些感知数据的结合处理,提升自动驾驶系统在复杂环境中的感知能力和决策精准性。感兴趣的同学可以看看!...- **文本分析**:利用自然语言处理(NLP)技术进行情感分析、关键词提取等,提升应用的智能化水平。### 5....列表(List)`List` 是 SwiftUI 中显示一组数据的列表视图,通常与 `ForEach` 一起使用。...以上只是控制整个容器的偏移量,如果我要容器置顶或置底怎么处理?SwiftUI怎么置顶显示?在 SwiftUI 中,如果你希望将某个视图置顶显示(即固定在视图的顶部),有几种常见的方式。...对于处理SDR(标准动态范围)格式的视频,如果在转码过程中出现失真问题,可以尝试在命令中添加一些额外的参数来优化色彩和亮度的保真度。

    9010

    WWDC 23 之后的 SwiftUI 有哪些新功能

    前言 WWDC 23 已经到来,SwiftUI 框架中有很多改变和新增的功能。在本文中将主要介绍 SwiftUI 中数据流、动画、ScrollView、搜索、新手势等功能的新变化。...数据流 Swift 5.9 引入了宏功能,成为 SwiftUI 数据流的核心。SwiftUI 不再使用 Combine,而是使用新的 Observation 框架。...在之前的 SwiftUI 框架版本中,应该使用 @ObservedObject 属性包装器来订阅更改。现在不需要了,因为 SwiftUI 视图会自动跟踪符合 Observable 协议的类型的更改。...动画 动画始终是 SwiftUI 框架中最重要的部分。在 SwiftUI 中轻松实现任何动画,但之前的框架版本缺少一些现在具有的功能。...增加了全新的 ContentUnavailableView 类型,当需要显示空视图时可以使用它。

    40320

    我们在未来会怎样构建Web应用程序?

    数据管道 我们的第一步工作是获取信息并将其显示在各个位置。例如,我们可能会显示一个好友列表、好友数量、特定好友组的一个模态等。 我们面临的问题是,所有组件看到的信息都需要是一致的。...2服务器 在服务器上,问题只会更复杂。  E. 端点 许多后端开发工作到头来成为了数据库和前端之间的一种粘合剂。...从本质上讲,能做到这一步的程序员都变成了数据库工程师。但是,如果我们在浏览器中有一个数据库,让它扮演分布式数据库中的一个“节点”,上面的任务不就可以自动完成了吗?...在服务器上的响应性也是个问题。我们必须确保在数据更改时更新所有相关客户端。例如,如果添加了一个“帖子”,我们需要通知与这个帖子相关的所有可能订阅。...他们做的最重要的一件事情就是 浏览器上的数据库。 有了 firebase,你可以像在服务器上一样查询数据。通过这种抽象,他们解决了上面列出的 A-E 问题。

    10K30

    扩大Android攻击面:React Native Android应用程序分析

    在我们之前的研究过程中,发现了很多没有正确使用Firebase认证模型的应用程序,其中就涉及到API密钥的不正确使用。...为了从index.android.bundle中提取Firebase API密钥,我们需要提取出下列字符串: FIREBASE_API_KEY FIREBASE_AUTH_DOMAIN FIREBASE_DB_URL...在我们需要逆向分析的React Native应用程序中,我们通过在Chrome中浏览提取到的JavaScript文件,我们能够找到大量的API节点: Firebase接口分析 下面的Python脚本可以用来跟...当然了,只有当我们给该脚本提供目标Firebase数据库的API密钥时,脚本才会有权限来读取数据库中的内容。如果你还想对目标数据库进行类似写入之类的操作,请参考Pyrebase的【操作手册】。...一般来说,通过分析应用程序APK文件中的JavaScript,我们可以提取出目标应用中的敏感凭证数据以及API节点。

    9.9K30

    SwiftUI + Core Data App 的内存占用优化之旅

    本文将通过对一个演示 App 进行逐步内存优化的方式( 由原先显示 100 条数据要占用 1.6 GB 内存,优化至显示数百条数据仅需 200 多 MB 内存 ),让读者对 SwiftUI 视图的存续期...第一轮优化:对视图 body 值进行优化 在第一轮优化中,我们会首先尝试从 SwiftUI 的角度入手。...在本例中,子视图的 body 值中一定会包含用于显示的图片数据,因此,即使该视图已经被显示过( 滚动出显示区域 ),该视图的 body 值仍将占用不小的内存。...我们可以通过在 onAppear 以及 onDisappear 中对图片的显示与否( 变量 show )进行控制( 迫使 SwiftUI 对视图的 body 重新求值 ),从而减少因上述原因所增加的内存占用...数据的多份拷贝 当图片数据从 SQLite 经 Core Data 最终通过 SwiftUI 显示时,实际上在内存中至少保存了三份拷贝: 行缓存 托管对象上下文( 托管对象被填充后 ) 显示该图片的 SwiftUI

    2.4K40

    SwiftUI + Core Data App 的内存占用优化之旅

    本文将通过对一个演示 App 进行逐步内存优化的方式( 由原先显示 100 条数据要占用 1.6 GB 内存,优化至显示数百条数据仅需 200 多 MB 内存 ),让读者对 SwiftUI 视图的存续期...下文中,我们将对这段代码进行逐步优化,以达到最终可用的程度。 第一轮优化:对视图 body 值进行优化 在第一轮优化中,我们会首先尝试从 SwiftUI 的角度入手。...在本例中,子视图的 body 值中一定会包含用于显示的图片数据,因此,即使该视图已经被显示过( 滚动出显示区域 ),该视图的 body 值仍将占用不小的内存。...我们可以通过在 onAppear 以及 onDisappear 中对图片的显示与否( 变量 show )进行控制( 迫使 SwiftUI 对视图的 body 重新求值 ),从而减少因上述原因所增加的内存占用...数据的多份拷贝 当图片数据从 SQLite 经 Core Data 最终通过 SwiftUI 显示时,实际上在内存中至少保存了三份拷贝: 行缓存 托管对象上下文( 托管对象被填充后 ) 显示该图片的 SwiftUI

    1.3K10

    老人新兵 —— 一款 iOS APP 的开发手记

    在最后的 app 里面有接近一半的显示控制其实都是在 UIKit 下完成的,即使像 TextField 这样最基本的需求,SwiftUI 的原生版本有时都无法胜任。...我的数据流控制逻辑基本上推倒重写了 4 次,目前版本的代码量在完成更多功能、更加稳定并且每个 view 中的数据都无需干预、动态更新的情况下少了一半。...当一个 view 中有基于 ForEach 动态变化的数据时,如果该 view 在 sheet 中,数据变化后会导致触发异常,如果将 view 从 Sheet 中提取出来直接显示则无此问题。...感觉 SwiftUI 在销毁 view 上的代码有比较严重的效率 bug( 参见上面的 TabView )。...@FetchRequest 对数据的动态管理非常好,在 SwiftUI 中数据的任何变化都能动态体现。

    2.5K40

    解析SwiftUI布局细节(二)循环轮播+复杂布局

    NavigationView + NavigationLink 的界面跳转,在苹果给的 SwiftUI 的使用例子中就是这样写的,当然我们在正常的使用中这样写也没啥问题,那我们界面跳转的问题是什么呢?...有一个还得说明一下,GeometryReader 改变了它显示内容的方式。在 iOS 13.5 中,内容放置方式为 .center。在 iOS 14.0 中则为:.topLeading。...的方式去实现,很多同行有说目前来看SwiftUI的List在数据量大的情况下性能不是特别好,采用ScrollView是个不错的方式,而且也很容易构建出来,并不是说每一个Item的位置都需要你去计算,...除了这个List,还要一个From我们也可以了解下,他们俩肉眼可见的区别 在选中这个点上的区别。...= .zero /// 当前显示的位置索引, /// 这是实际数据中的1就是数据没有被处理之前的0位置的图片 /// 所以这里默认从1开始 @State var currentIndex

    12.2K20

    WWDC 23 ,SwiftUI 5 和 SwiftData 的初印象

    欢迎大家在 Discord 频道[2] 中进行更多地交流 SwiftUI 如果说从 SwiftUI 1.0 到 4.0 每年的升级是一种小修小补的行为,那么今年苹果在 SwiftUI 5.0 上做出的努力至少算得上是中期改款了...这从根本上解决了当前影响 SwiftUI 应用( 过渡计算 )的效率问题。让开发者可以更加自由的来设计数据结构以及随心所欲的注入数据源。 不过很遗憾,这项新特性只能在 SwiftUI 5 上实现。...,直接定位到滚动视图的特定位置,只能使用一次 )、全新的滚动条控制( 闪烁 )、可自定义行视图在滚动区域的顶端和显示区域的显示状态( 例如可用其实现类似 watchOS 中的滚动到顶端子视图缩小的视觉效果...这是我目前整理的一些有关 SwiftData 的问题和注意事项( 原文发表在推文中,没有进行更系统的归纳): 尚不支持公共和共享数据的云同步 在当前版本中,通过其他上下文(ModelContext)创建的数据并不会自动合并到视图上下文中...com.apple.CoreData.ConcurrencyDebug 1 后,即使在新的 Context 中使用 transaction 尝试保持线程一致,仍会强制报错(即使是在一个新创建的 actor

    39110

    酷我音乐iOS小组件适配开发实践

    背景介绍 随着iOS17逐渐普及,一些App的功能逐渐向周围延伸.其中包含对手机端以及苹果各种平台的适配工作,本文讲述的主要内容是在iOS17上的Extension小组件技术开发实践....更新数据以供swiftUI的视图展示和交互使用),这种数据驱动视图符合swiftUI的声明式编程范式(跟我们用的OOP面向对象有较大差距) 这篇文章不能算教程,只能是算开发中遇到的过程记录,如果需要查看开发教程的话我建议去...要适配这个主要的原因是 有些apple watch的屏幕尺寸不一样,苹果为了留够边缘解决各种尺寸组件大小在不同屏幕上的显示的问题,做了一个内容边距设置,也主要是为了实现屏幕的组件的色彩染色(比如我们的组件是黄色...于是翻看WWDC视频,苹果很隐晦的说 AppIntent苹果内部有静态元数据提取. 什么是静态元数据提取?...至少是一种可行的路线.做个备选. 4.如何让开发中的Intent不在指令app中显示 我们开发小组件肯定不可能用一种Intent,得有很多种按钮触发不同事件,比如播放暂停、下一曲、收藏、等等.由于苹果的静态元数据提取会把我们的

    1.4K30
    领券