首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

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

阅读 The SwiftUI Layout Protocol [11]了解如何创建自定义布局。创建从底部开始的滚动视图Q:我如何实现一个底部对齐的滚动视图, macOS 上会不会有糟糕的性能?...A:你最好的选择是使用 ScrollView 和 ScrollViewReader,并在 onAppear 或新内容进来时滚动到最底部的视图。我不建议尝试旋转滚动视图。...image-20221023171100484滚动速度Q:有好的方式 List 和 ScrollView 滑动监听滑动的 velocity 值么?...因为通常情况下并不需要这个值,如果是要检测滚动掉帧,可以 Xcode Organizer 里查看,或者用 MetricKit 生成报告,开发环境也可以使用 Instruments 。... SwiftUI 中,有一个从第一版开始就存在但尚未公开的纯 SwiftUI 实现的滚动容器 —— _ScrollView 。

14.7K30

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

首先创建一个假设性的需求: 一个可以展示数万条记录的视图 从上个视图进入该视图不应有明显延迟 可以一键到达数据的顶部或底部且没有响应延迟 响应迟钝的列表视图 通常会考虑采用如下的步骤以实现上面的要求:...条演示数据后,该视图的响应状况如下: id_delay_demo_2022-04-23 12.22.44.2022-04-23 12_29_07 进入视图的时候有明显的卡顿(1 秒多钟),进入后列表滚动流畅且可无延迟的响应滚动到列表底部或顶部的指令...新的问题 细心的朋友应该可以注意到,运行解决方案一的代码后,第一次点击 bottom 按钮,大概率会出现延迟情况(并不会立即开始滚动)。...UITableView 实例 self.tableView = $0 }) } } } 至此我们已经实现了无延迟的进入列表视图,并在首次滚动到列表底部也没有延迟...对于拥有复杂结构子视图(尺寸不一致、图文混排)的 List 来说,在数据量大的情况下,任何的大跨度滚动( 例如直接滚动到列表底部 )都会给 List 造成巨大的布局压力,有不小的滚动失败的概率。

9K20

使用 fartscroll.js 让你的网页滚动放屁

放屁绝对不是一个很高雅的行为,但是如果你比较喜欢恶搞,或者愚人节,或者是一些比较特殊的网页设计中,可以通过 fartscroll.js 这个插件让你的网页滚动的过程中 放屁。...直接打开 fatscroll.js 的官方页面(http://theonion.github.io/fartscroll.js/),滚动一下,你就可以听到了放屁声音了,你滚动的距离和速度不同,放屁的声音也不同...使用方法也很简单,先下载插件包,解压出来之后,在网页中引入 fartscroll.min.js 这个文件,然后配置下面的参数等,启用这个插件: // 文档中滚动 400 像素就放屁 $(document...).fartscroll(); // 文档中每滚动 800 像素就放屁 $(document).fartscroll(800); // 网页中没滚动 100 像素就放屁 $("body").fartscroll...(100); // 很多很多的屁 $("body").fartscroll(5); 仅供娱乐和恶搞哈,相信应该没有太多人喜欢访问你网页的时候,听到你网页放屁哈哈。

89620

SwiftUI 的方式进行布局

初始状态( show == false ),视图一( 红色视图 )的底部与屏幕底部对齐,当 show == true ,视图二( 绿色视图 )的底部与屏幕底部对齐。...ScrollView 会使用父视图给定的全部建议尺寸创建滚动区域,但在询问其子视图的需求尺寸只会提供理想尺寸。...SwiftUI 进行布局,当布局容器给出的建议尺寸无法满足全部子视图的需求尺寸,会根据子视图的 Priority,优先满足级别较高的视图的布局需求。...七、Transition 通过为视图设定 Transition( 转场 ),视图插入或将其移出视图树SwiftUI 将自动生成对应的动画效果。...尽管当前的需求仅有两个视图,但我们仍然可以从中提炼出场景特性:垂直排列的前提下,特定状态,指定视图的底部与容器视图的底部对齐。

3.2K00

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

我们创建完 100 条数据后,重启应用( 重启可以更精准地测量内存占用情况 )并滚动列表至底部。此时该应用的内存占用为 1.6 GB 左右。...此时请不要惊讶,你可以尝试点击添加数据按钮继续增加数据,再次滚动底部,你将看到更加令人震惊的内存占用数值,不过有极大的可能会看不到( 应用已经崩溃了 )。...滚动底部后( 100 条数据 ),内存的占用将在 500 MB 左右。... 400 条记录的情况下,滚动底部,内存占用值差不多是 1.75 GB。尽管我们节省了差不多 70% 的内存占用,但仍无法完全满足需求。...,内存占用也仍然被控制一个相当理想的状态( 下图为 400 条数据滚动底部的内存占用情况 )。

1.2K10

SwiftUI 的方式进行布局

初始状态( show == false ),视图一( 红色视图 )的底部与屏幕底部对齐,当 show == true ,视图二( 绿色视图 )的底部与屏幕底部对齐。...ScrollView 会使用父视图给定的全部建议尺寸创建滚动区域,但在询问其子视图的需求尺寸只会提供理想尺寸。...SwiftUI 进行布局,当布局容器给出的建议尺寸无法满足全部子视图的需求尺寸,会根据子视图的 Priority,优先满足级别较高的视图的布局需求。...七、Transition 通过为视图设定 Transition( 转场 ),视图插入或将其移出视图树SwiftUI 将自动生成对应的动画效果。...尽管当前的需求仅有两个视图,但我们仍然可以从中提炼出场景特性:垂直排列的前提下,特定状态,指定视图的底部与容器视图的底部对齐。

4.7K80

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

我们创建完 100 条数据后,重启应用( 重启可以更精准地测量内存占用情况 )并滚动列表至底部。此时该应用的内存占用为 1.6 GB 左右。...此时请不要惊讶,你可以尝试点击添加数据按钮继续增加数据,再次滚动底部,你将看到更加令人震惊的内存占用数值,不过有极大的可能会看不到( 应用已经崩溃了 )。...滚动底部后( 100 条数据 ),内存的占用将在 500 MB 左右。... 400 条记录的情况下,滚动底部,内存占用值差不多是 1.75 GB。尽管我们节省了差不多 70% 的内存占用,但仍无法完全满足需求。...图片 可以加大检测力度,即使在生成了 400 条记录的情况下,内存占用也仍然被控制一个相当理想的状态( 下图为 400 条数据滚动底部的内存占用情况 )。

2.4K40

深入了解 SwiftUI 5 中 ScrollView 的新功能

当 scrollClipDisable 为 false 滚动内容会被裁剪以适应滚动容器边界。任何超出边界的部分将不会显示。...当 scrollClipDisable 为 true 滚动内容不会被裁剪。它可以延伸超出滚动容器的边界,从而显示更多内容。...可采用 优化 SwiftUI List 中显示大数据集的响应效率[5] 一文中介绍的方式来解决。 scrollPostion(id:) 使用此修饰符可以让滚动视图滚动到特定的位置。...(视图标识) 不支持锚点设定,固定锚点为子视图的 center 正如 优化 SwiftUI List 中显示大数据集的响应效率[6] 一文所提到的,当数据集很大,也会出现性能问题。...滚动停止,容器顶端将与子视图的顶部对齐(垂直模式下)。开发者可以通过控制 scrollTargetLayout 的启用与否来开关 viewAligned 的行为。

62020

如何判断 ScrollView、List 是否正在滚动

比如在 SwipeCell[3] 中,需要在可滚动组件开始滚动,自动关闭已经打开的侧滑菜单。遗憾的是,SwiftUI 并没有提供这方面的 API 。...本文将介绍几种 SwiftUI 中获取当前滚动状态的方法,每种方法都有各自的优势和局限性。...: UIScrollView, willDecelerate decelerate: Bool)手指拖动结束后( 手指离开 ),调用此方法 SwiftUI 中,很多的视图控件是对 UIKit( AppKit...绝大多数的时间里,Runloop 都处于 kCFRunLoopDefaultMode( default )模式中,当可滚动控件处于滚动状态,为了保证滚动的效率,系统会将 Runloop 切换至 UITrackingRunLoopMode...preference 与 onChange 的调用时机非常类似,只有值发生改变后才会传递数据。 ScrollView、List 发生滚动,它们内部的子视图的位置也将发生改变。

3.7K40

WWDC 23 ,SwiftUI 5 和 SwiftData 的初印象

欢迎大家 Discord 频道[2] 中进行更多地交流 SwiftUI 如果说从 SwiftUI 1.0 到 4.0 每年的升级是一种小修小补的行为,那么今年苹果在 SwiftUI 5.0 上做出的努力至少算得上是中期改款了...,直接定位到滚动视图的特定位置,只能使用一次 )、全新的滚动条控制( 闪烁 )、可自定义行视图滚动区域的顶端和显示区域的显示状态( 例如可用其实现类似 watchOS 中的滚动到顶端子视图缩小的视觉效果...)、支持分页滚动( 开发者长期盼望的 )、自定义滚动内容的缩进、为滚动内容(非滚动容器)添加安全区域等众多功能。...不考虑兼容旧版本的情况下,我认为 SwiftUI 5.0 的升级可以打 95 分(满分 100 分),不过考虑到很多的开发者相当一段时间内还无法使用这些新功能,心情就会异常的低落。...一开始看到这些信息,我内心无比兴奋,但很快就平静下来了,最终还有些无奈。 对于绝大多数开发者来说,一旦能够应用中使用这些新功能,苹果或许又会带来更多的新诱惑。

34410

WWDC 23 ,SwiftUI 5 和 SwiftData 的初印象

,直接定位到滚动视图的特定位置,只能使用一次 )、全新的滚动条控制( 闪烁 )、可自定义行视图滚动区域的顶端和显示区域的显示状态( 例如可用其实现类似 watchOS 中的滚动到顶端子视图缩小的视觉效果...)、支持分页滚动( 开发者长期盼望的 )、自定义滚动内容的缩进、为滚动内容(非滚动容器)添加安全区域等众多功能。...不考虑兼容旧版本的情况下,我认为 SwiftUI 5.0 的升级可以打 95 分(满分 100 分),不过考虑到很多的开发者相当一段时间内还无法使用这些新功能,心情就会异常的低落。...开心还是无奈 今年的 WWDC 中,苹果为 SwiftUI 带来了非常大的变革,并推出了开发者向往已久的 SwiftData。...一开始看到这些信息,我内心无比兴奋,但很快就平静下来了,最终还有些无奈。 对于绝大多数开发者来说,一旦能够应用中使用这些新功能,苹果或许又会带来更多的新诱惑。

1.1K20

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

前言 WWDC 23 已经到来,SwiftUI 框架中有很多改变和新增的功能。本文中将主要介绍 SwiftUI 中数据流、动画、ScrollView、搜索、新手势等功能的新变化。...之前的 SwiftUI 框架版本中,应该使用 @ObservedObject 属性包装器来订阅更改。现在不需要了,因为 SwiftUI 视图会自动跟踪符合 Observable 协议的类型的更改。...动画 动画始终是 SwiftUI 框架中最重要的部分。 SwiftUI 中轻松实现任何动画,但之前的框架版本缺少一些现在具有的功能。...每当用户滚动视图,它会通过设置第一个可见视图的标识来更新绑定。...它允许滚动视图中启用分页。 搜索 与搜索相关的视图修饰符也有一些很好的新增功能。例如,可以通过编程方式聚焦到搜索字段。

30920

解析 SwiftUI 中两处由状态更新滞后引发的严重 Bug

这两个错误包括:通过手势取消 Sheet 后,快速右滑导航容器导致应用锁死;以及滚动中返回上层视图导致应用崩溃。...原文发表我的博客 肘子的Swift记事本视图变化在前、状态变化在后 SwiftUI 中,某些可编程控件执行一定的操作,会先更新视图,待视图变化完成后再修改与其对应的状态。...当视图正在滚动返回上一层视图会导致应用崩溃这是一个由 xiaogd 我的 Discord 论坛中提出的 问题。...请至少进入第三级视图滚动当前视图当视图处于滚动状态,点击 NavigationStack 左上角的 “Back” 按钮。...由于返回上层视图,状态尚未更新,因此清理 AG (返回动画运行中),会破坏应用程序的 AttributeGraph 完整性,从而导致应用程序死锁或崩溃。

570110

掌握 SwiftUI 的 Safe Area

SwiftUI 中,开发者通常只有需要获取 StatusBar + NavBar 的高度或 HomeIndeicator + TabBar 的高度才会使用到 safeAreaInsets 。...从 iOS 14 开始,SwiftUI 计算视图的安全区域,将软键盘在屏幕上的覆盖区域(iPadOS 下,将软键盘缩小后键盘的覆盖区域将被忽略)也一并进行考虑。...首先,背景并没有充满全部屏幕,其次软键盘弹出,我们并不希望背景因为安全区域的变化而发生改变。...safeAreaInsetList2 遗憾的是, iOS 15 之前,SwiftUI 并没有提供调整视图安全区的手段,如果我们想通过 SwiftUI 的手段创建一个自定义 Tabbar ,列表中最后的内容将被...monitor.willShow { // 键盘即将弹出隐藏 Text("底部状态条") .font(.title3)

7.5K31

Text 中实现基于关键字的搜索和定位

,并可通过按钮搜索结果中进行滚动切换?...本节的内容仅代表我考虑处理上述问题的想法和思路。其中不少功能已经超出了原本的需求,增加这些功能一方面有利于更多地融汇以前博客中的知识点,另一方面也提高了解题的乐趣。...TranscriptionRow() .id(transcription.id)}当为 ForEach ( 上面的代码使用了隐式 ForEach 形式 )中的 View 添加显式标识符后( 使用 id 修饰器),视图刷新...请阅读 优化 SwiftUI List 中显示大数据集的响应效率[6] 以及 避免 SwiftUI 视图的重复计算[7] 两篇文章,了解更多有关性能优化方面的内容通过 currentPostion 获取需要滚动到的...List 中,每个视图进入显示窗口都会调用它的 onAppear,每个视图退出显示窗口都会调用它的 onDisapper。

4.2K30

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

是否有任何建议用来检测列表中的行选择,类似于 “NavigationLink”,但不导航到另一个视图(例如,显示 Sheet 或从列表中选择一个选项 )?...创建与 IM 应用类似的底部文字输入栏Q:你好,我的问题是关于 TextField 的。...假设我们想创建一个类似于 iMessage 的视图,在那里你可以看到一个信息列表(与本例无关),视图的底部有一个文本框。当用户点击文本字段,键盘会在其工具栏中出现一个文本字段。...是否可以SwiftUI 中完成( 不使用 UIKit )?给我一些方向来完成它吗?A:一般来说,我建议使用 .safeAreaInset(edge: .bottom) 来实现底部文本字段。...拖动过程中,Y 轴的刻度会变大。我的例子中,不拖动从 0 到 75,拖动从 0 到 100。有什么办法可以阻止这种情况吗?

12.2K20
领券