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

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

本文将介绍几种 SwiftUI 获取当前滚动状态的方法,每种方法都有各自的优势和局限性。...:PreferenceKey SwiftUI ,子视图可以通过 preference 视图修饰器向祖先视图传递信息( PreferenceKey )。...preference 与 onChange 的调用时机非常类似,只有值发生改变后才会传递数据。 ScrollView、List 发生滚动时,它们内部的子视图的位置也将发生改变。...( 状态已变化为滚动 ),保持手指处于按压状态并停止滑动,此方式会将此时视为滚动结束,而前两种方式仍会保持滚动的状态直到手指结束按压IsScrolling我将后两种解决方案打包做成了一个库 —— IsScrolling...我正以聊天室、Twitter、博客留言等讨论为灵感,从中选取有代表性的问题和技巧制作成 Tips ,发布 Twitter 上。

3.7K40

掌握 SwiftUI 的 Safe Area

SwiftUI 同时提供了一些方法和工具让开发者对安全区域有所控制。 本文将探讨如何SwiftUI 获取 SafeAreaInsets、将视图绘制到安全区域之外、修改视图的安全区域等内容。...尽管通过 ignoresSafeArea 可以解决上述问题,但在什么位置添加、如何设定还是有一点讲究的。...使用 safeAreaInset 扩展安全区域 SwiftUI ,所有基于 UIScrollView 的组件(ScrollView、List、Form),默认情况下都会充满整个屏幕,但仍可确保我们可以安全区域内看到所有的内容...TextField 保持键盘自动避让的情况下,固定底部的状态条。...如果想底部状态条固定,同时又保持 TextField 的自动避让能力,需要通过监控键盘的状态,做一点额外的操作。

7.5K31
您找到你想要的搜索结果了吗?
是的
没有找到

深入了解 SwiftUI 5 ScrollView 的新功能

SwiftUI 5.0 ,苹果大幅强化了 ScrollView 功能。新增了大量新颖、完善的 API。本文将对这些新功能进行介绍,希望能够它们更多、更早的帮助到有需要的开发者。...某些场景下,效果与 safeAreaInset 十分相似。例如,在下面的代码,为 ScrollView 的 leading 方向添加安全区域的两种方式效果是一致的。...可采用 优化 SwiftUI List 显示大数据集的响应效率[5] 一文中介绍的方式来解决。 scrollPostion(id:) 使用此修饰符可以滚动视图滚动到特定的位置。...总结 我完全没有想到, SwiftUI 5 ,苹果对 ScrollView 进行了全面增强。值得赞赏的是,他们不仅提供了一些一直期待的功能,而且 API 的设计和实现完成度上都非常出色。...就我个人而言, SwiftUI 5 ScrollView 的原生方案已经能够满足大多数需求,因此我们将看到更多人采用 ScrollView + LazyStack 的组合方式。

70620

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

SwiftUI 布局 —— 尺寸( 上 )[8] 一文,对建议尺寸的几种模式都进行了介绍。如何减少主线程的负担Q:如何避免所有操作都被放置主线上?...目前 SwiftUI 没有 API 可以限制用户字段输入的字符。很希望苹果能够继续扩展基于 FormatStyle 的解决方案,可以实时对输入内容进行校验。...近期,聊天我也看到了类似的讨论( 我本人尚未在 iOS 16 上遇到 )。贴一个临时的解决方案。... SwiftUI ,有一个从第一版开始就存在但尚未公开的纯 SwiftUI 实现的滚动容器 —— _ScrollView 。...我正以聊天室、Twitter、博客留言等讨论为灵感,从中选取有代表性的问题和技巧制作成 Tips ,发布 Twitter 上。

14.7K30

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

欢迎大家 Discord 频道[2] 中进行更多地交流前些日子,一位网友聊天室中就如下的 问题[3] 与大家进行了交流与探讨 —— 如何通过 Text + AttributedString 实现类似文章关键字检索的功能...符合条件的 range 以及搜索结果的序号( 位置 )。...( 当前选择的高亮位置 ),且下一个序号位置仍在同一个 transcription ,那么将放弃滚动。..._25_53搜索条出现时 TextField 获得焦点通过 @FocusState , TextField 搜索条出现时,自动获得焦点,从而自动开启键盘。...从本周开始我将以聊天室、Twitter、博客留言等讨论为灵感,从中选取有代表性的问题和技巧制作成 Tips ,发布 Twitter 上。

4.2K30

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

是否关于如何使用多个场景的指导或例子?或者大多数应用程序只需要一个 WindowGroup ?A:多场景对于建立复杂的应用程序是很有用的,特别是 macOS 上。...onAppear、init、viewDidLoadQ:我的应用程序,我 UIHostingController 托管了 SwiftUI 视图,这些视图都处于一个 UITabBarController...阅读 SwiftUI 4.0 的全新导航系统[13] ,了解它们之间的不同。位置偏移的方法与效率Q:非线性位置( 有 2 个轴 )渲染带有圆形图像最好方法是什么?...A:实现近似行为的方法是菜单中使用命令来提供相同的操作。通常情况下,应该有列表人们知道有哪些键盘快捷键可用。但是,如果这不适合你的使用情况,我们会对这方面的增强请求反馈感兴趣。...我正以聊天室、Twitter、博客留言等讨论为灵感,从中选取有代表性的问题和技巧制作成 Tips ,发布 Twitter 上。

12.2K20

肘子的 Swift 周报 #038 | 更好还是更便宜?

例如,有些用户将 AVP 用作高端影音设备,利用卓越的视觉效果和沉浸式体验,与传统影音设备相比,AVP 显示较高的性价比。...无论如何,持续创新、倾听用户需求,并保持对未来技术趋势的敏锐洞察,都将是确保 AVP 及其后续产品线,乃至整个可穿戴设备行业蓬勃发展的关键。...iOS 18 更新,苹果公司对照片应用进行了全面的重新设计,其中就包含了对搜索框位置和显示效果的调整。...在这篇文章,Danijela Vrzan 介绍了如何在 Sketch 应用程序创建自定义 SF Symbols 图标。...通过本文,读者将能够深入理解如何在 Swift 环境实施 WebSocket 通信,并掌握技术优势及适用场景。

9510

掌握 ViewThatFits

这种对理想尺寸单个轴向上的限制与 ViewThatFits 构造方法的受限轴设置完全对应。通过设置,我们可以 ViewThatFits 只特定轴向上对子视图的理想尺寸进行判断。...由于 ViewThatFits 能够提供的高度只有 30, Text2 最终呈现时,它将根据默认显示规则对文字进行截断处理。... SwiftUI ,我们可以通过 frame 来修改视图在理想状态下的呈现。...总结 正如我们所看到的,ViewThatFits 是 SwiftUI 工具箱的一个强大而灵活的组件,它可以帮助开发者优雅地解决多种布局挑战,提升应用程序的用户体验和界面适应性。...但是,与任何强大的工具一样,能否发挥期作用来自于深入理解使用方式和限制。 本文中,我们对 SwiftUI 的 ViewThatFits 容器进行了深入的探索。

16710

SwiftUI 视图的生命周期研究

为了视图能够反映状态的变化,视图需要注册和对应的依赖项。...ScrollView + VStack ,即使 Cell 视图没有显示屏幕,仍会触发 onAppear ScrollView { VStack { ForEach(0..<100...•ScrollView + VStack ,即使 Cell 视图没有出现在可见区域,但它在最开始就会参与容器的布局,因此会在创建初始便触发 onAppear,但无论如何滚动,所有的 Cell 视图始终会参与布局...开发者即使不了解文本上述的内容,也可以 SwiftUI 的代码日常中发挥不错的效率。但如果能够对视图的生命周期有更深入的了解,将可以帮助开发者一些特定的场合提高代码的执行效率。...复杂的任务仅执行一次 但是,onAppear 或 task 也并非只会执行一次,如何保证某些负担较重的任务只页面执行一次呢?

4.3K30

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

原文发表我的博客 肘子的Swift记事本视图变化在前、状态变化在后 SwiftUI ,某些可编程控件执行一定的操作时,会先更新视图,待视图变化完成后再修改与其对应的状态。...通过手势取消 Sheet 后,快速右滑导航容器会导致应用锁死这是一个 SwiftUI 所有版本存在的错误,你可以众多的论坛或聊天室里看到不少的开发者都在寻找解决方法。...我们遇到问题的两个场景应用程序都恰好使用了导航容器,并且通过特定的操作,使 RunLoop 处于了适合 AG 打包更新的状态。...由于返回上层视图时,状态尚未更新,因此清理 AG 时(返回动画运行),会破坏应用程序的 AttributeGraph 完整性,从而导致应用程序死锁或崩溃。...随着版本的提高,SwiftUI 的功能也确实得到了相当程度的增加。不过,即使最新的版本一些对 UIKit(AppKit)进行二次包装的控件,仍有不少细节处理不到位的问题。

603110

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

但是,SwiftUI 的一些系统控件并没有完全遵循响应式的设计原则,由此某些情况下会出现严重的错误,影响用户体验,并使开发者无所适从。...通过手势取消 Sheet 后,快速右滑导航容器会导致应用锁死 这是一个 SwiftUI 所有版本存在的错误,你可以众多的论坛或聊天室里看到不少的开发者都在寻找解决方法。...我们遇到问题的两个场景应用程序都恰好使用了导航容器,并且通过特定的操作,使 RunLoop 处于了适合 AG 打包更新的状态。...由于返回上层视图时,状态尚未更新,因此清理 AG 时(返回动画运行),会破坏应用程序的 AttributeGraph 完整性,从而导致应用程序死锁或崩溃。...随着版本的提高,SwiftUI 的功能也确实得到了相当程度的增加。不过,即使最新的版本一些对 UIKit(AppKit)进行二次包装的控件,仍有不少细节处理不到位的问题。

28320

GeometryReader :好东西还是坏东西?

GeometryReader 自 SwiftUI 诞生之初就存在,它在许多场景扮演着重要的角色。然而,从一开始就有开发者对持负面态度,认为应尽量避免使用。...官方文档的“定义其内容( defines its content )”这一表述容易人误以为 GeometryReader 的主要功能是主动影响子视图,或者说获取的几何信息主要用于子视图,但实际上,...由于 GeometryReader 的 ideal size 为 (10,10),因此,滚动方向上,返回给 ScrollView 的需求尺寸即为 10。...一些复杂的布局场景,或者某些设备或系统版本,布局可能需要经过几轮的协商才能获得最终稳定的结果,尤其是当视图需要依赖 GeometryReader 提供的几何信息来重新确定自己的位置和尺寸时。...里子和面子:不同的尺寸数据 SwiftUI ,有一些 modifier 是布局之后,渲染层面对视图进行的调整。

49070

【visionOS】从零开始创建第一个visionOS程序

从那里,添加特定于visionOS的SwiftUI场景类型,如卷和空间。这些场景类型你融入深度,3D对象和身临境的体验。...构建并运行你的app页面链接 模拟器构建并运行你的应用,看看它看起来如何。visionOS的模拟器有一个虚拟背景作为你的应用程序内容的背景。使用键盘和鼠标或触控板环境中导航并与应用程序交互。...tips:应用程序不能控制窗口空间中的位置。系统将每个窗口放置初始位置,并根据与应用程序的进一步交互更新该位置。...将3D内容添加到应用程序 为您的visionOS应用程序添加深度和维度,并发现如何将您的应用程序内容融入人的周围环境。 带有立体显示器的设备可以人们以一种感觉更真实的方式体验3D内容。...如果你想人们沉浸在你的内容,那就用完整的风格来配置你的空间。有关更多信息,请参阅,您的应用程序创建完全沉浸式体验。 请记住设置你ImmersiveSpace中放置的项目的位置

73340

SwiftUI 中用 Text 实现图文混排

一个和一组 SwiftUI ,Text 是使用频率最高的几个组件之一,几乎所有的文字显示操作均由完成。随着 SwiftUI 版本的不断提升,Text 的功能也得到持续地增强。... SwiftUI ,我们需要通过 Image 来显示 SF Symbols,并可使用一些修饰器来对进行设置:Image(systemName: "ladybug") .symbolRenderingMode...一个有关图文混排的问题前几天聊天室[8],一个朋友询问 SwiftUI 是否能实现下图中 tag( 超市标签 )+ 商品介绍的版式效果。...,此方案将不再有效( 其他位置很难 overlay 对齐 )方案三:将视图转换成图片,插入 Text 中方案三的解决思路与方案二一样,不使用预制图片,使用 SwiftUI 视图创建标签将标签视图转换成图片添加到...,可以将其放置 Text 的任意位置由于范例代码采用了 SwiftUI 4 提供的 ImageRenderer 完成视图至图片的转换,因此仅支持 iOS 16+低版本的 SwiftUI ,可以通过用

4.2K30

肘子的 Swift 周报 #036 | WWDC 2024 观后感

苹果在演示展现了对 AI 的理解:避免华而不实的技术炫耀,重视隐私保护, AI 技术自然融入日常操作,并利用设备与用户之间的紧密联系,借助更丰富的上下文信息,提供更为个性化的 AI 体验。...总的来说,苹果的 AI 技术并不会让与会者感受到跨时代的革命性创新,但将渗透到用户日常生活的细微之处,越来越多的人在不经意间享受到 AI 时代的便捷。...这可能会许多对 SwiftData 抱有高期望的开发者感到失望,然而,深入研究后,我认为这些重大调整背后有合理之处。...从这个版本开始,SwiftUI 开发团队似乎找到了快速发展 SwiftUI 的正确路径,探索出了保持声明式框架特性的同时,有效提升表现力的方法。...在这次更新SwiftUI 团队转变了以往的 API 设计策略——过往的设计高度封装且调整空间较小,现在则为开发者提供了更多的底层控制能力。

9610

如何SwiftUI 创建条形图

前言 条形图以矩形条的形式呈现数据的类别,宽度和高度与它们表示的值成比例。本文将展示如何创建一个垂直条形图,其中矩形的高度将代表每个类别的值。...系列文章 如何SwiftUI 创建条形图 SwiftUI 的水平条形图 iOS 16 中用 SwiftUI Charts 创建一个折线图 iOS16 中用 SwiftUI 图表定制一个线图... Swift 图表中使用 Foudation 库的测量类型 开始图表布局 SwiftUI 对探索不同布局和预览实时视图结果是很友好的。...图标被设置为固定大小,视图被嵌入到 ScrollView ,以便在设备旋转时滚动。...SwiftUI 是一个很好的平台,用于创建视图和快速重构独立的子视图。 SwiftUI 构建条形图需要做一些工作,随着使用数据来试用条形图,可以确定更多的定制化。

5.1K10

SwiftUI 布局协议 - Part2

当我们改变角度时,SwiftUI 会计算好每个视图最初和最终的位置,然后动画期间内修改它们的位置,从A点到B点成一条直线。...在这个例子容器中一共有44个视图,所以我们的新容器将会分别以12,12,12和8为一圈。 注意本案例如何使用缓存与子视图通信。...中间的数值将会穿插在两者的位置之中。 我们创建组合布局之前,我先来介绍一下 WaveLayout,这个布局有好几个参数来你改变正弦波动的幅度,频率和角度。...同时也要注意,这里有一个好的选择,即放置到具有垂直和水平的滚动 ScrollView 。 注意这是基本实现,仅用于说明如何实现。还有许多潜在的优化,但制作树布局所需的关键元素都在这里。...总结 即使你不打算写你自己的布局容器,明白它是如何工作也会帮助你理解布局 SwiftUI 的一般工作方式。

2.7K30
领券