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

掌握 SwiftUI 中的 ScrollView:滚动几何

通过详细的代码示例和解释,你将学习如何利用这些工具创建动态和响应迅速的用户界面。SwiftUI 是一个强大的框架,它简化了在苹果平台上构建用户界面的过程。...SwiftUI 中的一个基本组件是 ScrollView,它允许用户通过滚动导航内容。然而,管理滚动位置和理解滚动交互可能是一个挑战。...虽然有用,但当用户使用手势与滚动视图交互时,它显得不够全面。...完整代码示例分析下面是一个完整的 SwiftUI Demo,其中包含了我们刚刚讨论的 ScrollView、ScrollGeometry 和 onScrollGeometryChange 的使用示例。...总结今天,我们探讨了 SwiftUI 中的新 ScrollGeometry 类型和 onScrollGeometryChange 视图修饰符。

17611

如何使用 SwiftUI 中 ScrollView 的滚动偏移

前言WWDC 24 已经结束,我决定开始写一些关于 SwiftUI 框架即将推出的新特性的文章。今年,苹果继续填补空白,引入了对滚动位置更细粒度的控制。本周,我们将学习如何操作和读取滚动偏移。...} } .scrollPosition($position) }}如上例所示,我们定义了 position 状态属性,并使用 scrollPosition 视图修饰符将滚动视图与状态属性绑定...ScrollPosition 提供了可选的 edge、point 和 viewID 属性,以在你编程滚动时读取值。每当用户与滚动视图交互时,这些属性将变为 nil。...contentBounds.origin 将提供当前滚动位置的偏移量。我们将这个偏移量存储在 scrollOffset 状态属性中,并在视图底部显示当前的滚动位置。...总结在本文中,我们深入探讨了 SwiftUI 框架中 ScrollView 的新特性,特别是如何通过 ScrollPosition 类型实现更精确的滚动控制。

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

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

    在 SwiftUI 5.0 中,苹果大幅强化了 ScrollView 功能。新增了大量新颖、完善的 API。本文将对这些新功能进行介绍,希望能够让它们更多、更早的帮助到有需要的开发者。...之前在 List 或 TextEditor 中实现类似操作是十分困难的。 默认的 ContentMarginPlacement(.automatic)将导致指示器与内容之间的长度不一致。...仅适用于 ScrollView 当 ForEach 中的数据源遵循 Identifiable 协议时,无需显式使用 id 修饰符设置标识 与 scrollTargetLayout 配合使用,可以获取当前的滚动位置...scrollTargetBehavior scrollTargetBehavior 用于设置 ScrollView 的滚动行为:分页还是与子视图对齐。...就我个人而言,在 SwiftUI 5 中,ScrollView 的原生方案已经能够满足大多数需求,因此我们将看到更多人采用 ScrollView + LazyStack 的组合方式。

    92120

    用 SwiftUI 的方式进行布局

    本文将通过用多种手段完成同一需求的方式,展示 SwiftUI 布局系统的强大与灵活,并通过这些示例让开发者对 SwiftUI 的布局逻辑有更多的认识和理解。...在初始状态时( show == false ),视图一( 红色视图 )的底部与屏幕底部对齐,当 show == true 时,视图二( 绿色视图 )的底部与屏幕底部对齐。...== true 时,视图二( 绿色视图 )的底部必然与屏幕底部对齐,因此,将 overlay 的对齐指南设置为 bottom ,可以极大地简化我们的初始布局声明。...我们在第一个 overlay 中绘制了一个与视图二尺寸一致的视图( 不显示 ),并将其底边与屏幕底边对齐。...我们利用 overlay 嵌套 + alignmentGuide 的方式实现了将视图一的底边与视图二的顶部对齐绑定。

    3.3K00

    用 SwiftUI 的方式进行布局

    本文将通过用多种手段完成同一需求的方式,展示 SwiftUI 布局系统的强大与灵活,并通过这些示例让开发者对 SwiftUI 的布局逻辑有更多的认识和理解。 可在 此处 获取本文代码。...在初始状态时( show == false ),视图一( 红色视图 )的底部与屏幕底部对齐,当 show == true 时,视图二( 绿色视图 )的底部与屏幕底部对齐。...== true 时,视图二( 绿色视图 )的底部必然与屏幕底部对齐,因此,将 overlay 的对齐指南设置为 bottom ,可以极大地简化我们的初始布局声明。...我们在第一个 overlay 中绘制了一个与视图二尺寸一致的视图( 不显示 ),并将其底边与屏幕底边对齐。...我们利用 overlay 嵌套 + alignmentGuide 的方式实现了将视图一的底边与视图二的顶部对齐绑定。

    4.8K80

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

    Ask Apple 为开发者与苹果工程师创造了在 WWDC 之外进行直接交流的机会。本文对本次活动中与 SwiftUI 有关的一些问答进行了整理,并添加了一点个人见解。本文为下篇。...A:向文本字段提供 FormatStyle 以实现自动将文本转换为各种数字。但是,此转换仅在文本字段完成编辑时才会发生,并且不会阻止输入非数字字符。...将背景扩展到安全区域Q:如果我有一个自定义的容器类型,可以接受一个顶部和底部的视图,是否有办法让 API 的调用者将所提供的视图的背景扩展到安全区域内,同时将内容( 如文本或按钮 )保留在安全区域内?...Text 与 TextField 在编辑模式下的切换Q:在 editMode 的文档中建议,在非编辑模式下,可以选择将 Text 视图换成 TextField 。...在 SwiftUI 中,有一个从第一版开始就存在但尚未公开的纯 SwiftUI 实现的滚动容器 —— _ScrollView 。

    14.8K30

    SwiftUI 在 WWDC 24 之后的新变化

    我们还在 TabSection 实例上使用 tabViewStyle 视图修饰符,将特定的标签部分分组并移动到侧边栏。...英雄动画SwiftUI 引入了 matchedTransitionSource 和 navigationTransition,我们可以在任何 NavigationLink 实例中配对使用。...滚动位置新的 ScrollPosition 类型与 scrollPosition 视图修饰符配对,允许我们读取 ScrollView 实例的精确位置。我们还可以使用它编程地滚动到滚动内容的特定点。...框架的下一版本包括许多新 API,如窗口推送、TextField 和 TextEditor 视图中的文本选择观察、搜索焦点监控、自定义文本渲染、新的 MeshGradient 类型等等,我无法在一篇文章中涵盖所有内容...这些改进使开发者能够创建更灵活和高效的用户界面。SwiftUI还引入了许多新的API,如窗口推送、文本选择观察、搜索焦点监控等,使开发更加便捷和强大。

    16910

    【Android 应用开发】Canvas 精准绘制文字 ( 测量文本真实边界 | 将文本中心点与给定中心点对齐 )

    文章目录 一、测量文本真实边界 二、将文本中心点与给定中心点对齐 一、测量文本真实边界 ---- Paint.getTextBounds() 函数原型如下 : public class Paint {..., 并不是绘制该文本的坐标 , 是使用 Paint 在 Canvas 中绘制的文本的真实占用区域 , 如下图红色矩形框所在的区域 , 与文本的相对坐标 , 下图的红色矩形框的 右下角是 ( 0 , 0...) 坐标位置 ; Rect 中获取的坐标值示例 : left = 4 , top = -31 , right = 28 , bottom = 0 ; 下图中红色矩形框是 绘图占用范围 , 蓝色矩形框是..., 百分号等 , 造成了真实文本与绘图区域的差异 ; 绘图区域 与 真实文本区域 的差异 , 就导致了 文字绘图 不准确 , 不好定位的问题 ; 二、将文本中心点与给定中心点对齐 ---- 给定中心点...( x , y ) ; 绘制文本 , 使得 文本的中心点 与 给定的中心点对齐 ; 根据中心点位置 : 确定绘制文本的左侧位置 : x - (rect.left + rect.right) / 2 ,

    1.4K20

    掌握 SwiftUI 的 Safe Area

    在 UIKit 中,开发者需要利用 safeAreaInsets 或 safeAreaLayoutGuide ,才能确保将视图放置在界面中的可见部分。 SwiftUI 对上述过程进行了彻底的简化。...本文将探讨如何在 SwiftUI 中获取 SafeAreaInsets、将视图绘制到安全区域之外、修改视图的安全区域等内容。...•keyboard与显示在视图内容上的任何软键盘的当前范围相匹配的安全区域。...从 iOS 14 开始,SwiftUI 计算视图的安全区域时,将软键盘在屏幕上的覆盖区域(iPadOS 下,将软键盘缩小后键盘的覆盖区域将被忽略)也一并进行考虑。...使用 safeAreaInset 扩展安全区域 在 SwiftUI 中,所有基于 UIScrollView 的组件(ScrollView、List、Form),在默认情况下都会充满整个屏幕,但仍可确保我们可以在安全区域内看到所有的内容

    7.7K31

    掌握 ViewThatFits

    ScrollView:如果理想状态的轴与滚动方向一致,则在滚动方向上一次性展示所有的子视图而无视父视图的建议尺寸。 VStack、HStack、ZStack:所有子视图在理想状态下的整体呈现。...100 的建议尺寸高度,充分利用了垂直方向上的空间,将完整的文本内容呈现出来。...选择合适长度的文本 这也是 ViewThatFits 最常被使用的场景,从提供的一组文本中,找出最适合当前空间的那个。...在本节中,我们将创建一个符合 Layout 协议的布局容器,来实现对 ViewThatFits 的复刻。...但是,与任何强大的工具一样,能否发挥期作用来自于深入理解其使用方式和限制。 在本文中,我们对 SwiftUI 中的 ViewThatFits 容器进行了深入的探索。

    23810

    SwiftUI 新容器视图 API 深度解析:轻松构建自定义布局

    今年,Apple 引入了新的 API,使我们能够以全新的方式构建自定义容器视图。本周,我们将学习 SwiftUI 新的分解 API 的优势。容器视图容器视图就是一个可以包含其他视图的视图。...通过在 Card 容器视图内嵌入不同的视图,你可以在应用的多个屏幕中复用它。这是使用容器视图的主要优势之一:你可以通过将共享的功能封装在容器视图中,在应用的不同地方重复使用它们。...它符合 View 协议,因此我们仍然可以附加额外的 SwiftUI 视图修饰符。它还为我们提供了 id 属性,这是一个唯一标识符,以及与特定视图关联的容器值。我们将在接下来的文章中更多讨论容器值。...我们使用了带有 subviews 参数的 Group 视图,它允许我们将子视图提取到一个名为 SubviewsCollection 的集合类型中。...运行这个Demo此代码展示了如何在 SwiftUI 中构建自定义的容器视图,灵活地将不同的布局封装在容器中,以便在应用中多次复用这些布局模式。

    18633

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

    比如在 SwipeCell[3] 中,需要在可滚动组件开始滚动时,自动关闭已经打开的侧滑菜单。遗憾的是,SwiftUI 并没有提供这方面的 API 。...本文将介绍几种在 SwiftUI 中获取当前滚动状态的方法,每种方法都有各自的优势和局限性。...目前 SwiftUI 在内部的实现上去 UIKit( AppKit )化很明显,比如,本节介绍的方法在 SwiftUI 4.0 中已经失效方法二:Runloop我第一次接触 Runloop 是在学习 Combine...preference 与 onChange 的调用时机非常类似,只有在值发生改变后才会传递数据。在 ScrollView、List 发生滚动时,它们内部的子视图的位置也将发生改变。...( 状态已变化为滚动中 ),保持手指处于按压状态并停止滑动,此方式会将此时视为滚动结束,而前两种方式仍会保持滚动中的状态直到手指结束按压IsScrolling我将后两种解决方案打包做成了一个库 —— IsScrolling

    3.8K40

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

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

    40320

    在 SwiftUI 中实现视图居中的若干种方法

    在 SwiftUI 中,有很多手段可以达成此目的。本文将介绍其中的一些方法,并对每种方法背后的实现原理、适用场景以及注意事项做以说明。...请阅读 SwiftUI 專欄 #4 Color 不只是顏色[3] ,掌握有关 Color 更多的内容对齐指南上节中,我们通过填充物让 Text 实现了左右居中。...上下居中则是利用了 HStack 对齐指南的默认设定( .center )实现的。本节中,我们将完全通过对齐指南来实现居中操作。...空间 )Text 最大可用宽度为 300Color 与 Text 将按照对齐指南 center 进行对齐( 看起来就是 Text 显示在 Color 的中间 )如果将代码改写成下面的方式就会出现问题:ZStack...将 Text 的中心点与给定的位置进行对齐( postion 是一个通过 CGPoint 来对齐中心点的视图修饰器 )当然,你也可以获取 Text 的 Geometry 信息,通过 offset 或

    6.8K40

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

    - **UIKit 集成**:学习如何在 SwiftUI 中使用 UIKit 组件,或将 SwiftUI 视图嵌入到现有的 UIKit 应用中。...**实践**: - 创建一个自定义的评分组件,并在多个视图中复用。### 5. 实践与项目开发通过构建实际项目,将学习到的知识应用到实践中。...列表(List)`List` 是 SwiftUI 中显示一组数据的列表视图,通常与 `ForEach` 一起使用。...以上只是控制整个容器的偏移量,如果我要容器置顶或置底怎么处理?SwiftUI怎么置顶显示?在 SwiftUI 中,如果你希望将某个视图置顶显示(即固定在视图的顶部),有几种常见的方式。...使用 `ScrollView` 与 `.frame()` 控制如果你的视图内容超出屏幕范围,你可以使用 `ScrollView` 并结合 `.frame(maxHeight: .infinity)` 来控制视图的布局

    9010
    领券