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

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

SwiftUI 5.0 中,苹果大幅强化了 ScrollView 功能。新增了大量新颖、完善的 API。本文将对这些新功能进行介绍,希望能够让它们更多、更早的帮助到有需要的开发者。...应将此修饰符应用于 ScrollView 中包含主要重复内容的布局容器,如 LazyHStack 或 VStack。...NamedCoordinateSpace.scrollViewSwiftUI 5 中,苹果新增了 NamedCoordinateSpace 类型,方便用户命名坐标系,并提供了预置的 .scrollView...总结 我完全没有想到,在 SwiftUI 5 中,苹果对 ScrollView 进行了全面增强。值得赞赏的是,他们不仅提供了一些一直期待的功能,而且在 API 的设计和实现完成度上都非常出色。...就我个人而言,在 SwiftUI 5 中,ScrollView 的原生方案已经能够满足大多数需求,因此我们将看到更多人采用 ScrollView + LazyStack 的组合方式。

67320

android scrollview嵌套listview计算高度的问题

ScrollView中只能放一个控件,一般都放LinearLayout,orientation属性值为vertical。在LinearLayout中放需要呈现的内容。...ListView也在其中,ListView的高度设为适应自身内容(wrap_content)。...但是为啥在scrollview中嵌套listview会出现只显示第一条listitem的高度呢,原因是:scrollview的ontach方法的滚动事件消费处理,ListView控件的高度设定问题 从谷歌那里找到的...ScrollView嵌套ListView只显示一行的解决办法相信很多人都遇到过,然后大部分都是用这位博主的办法解决的吧 刚开始我也是用这个办法解决的,首先感谢这位哥的大私奉献,贴上地址 http:/...*行数可以得到字体的总高度,然后在加上上下边距就是TextView真正的高度,然后setMeasuredDimension进去就可以计算出正确的值出来。

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

textarea内容自动撑开高度,实现高度自适应

但是它有一个缺点是,它的高度是固定了,如果文本内容超出了它设定的高度时,就会显示出丑陋的滚动条。 然后有些时候,为了用户体验,我们需要让它的高度随着文本内容高度而动态变化。...发微博的输入框会检测输入内容高度,如果超出的预设的高度,会随着文本的高度的增加而增加,当文本高度减少的时候,文本框的高度也会随着减少。 今天,就来尝试自己实现这个功能。...具体思路:当出现滚动条的时候,文本的实际高度就是**scrollHeight**,我们只需要设置文本框的高度内容的**scrollHeight**即可。 代码实现: <!...padding*2 需要在每次设置scrollHeight之前,设置一次文本框的初始高度textarea.style.height = '100px';,这样在文本内容减少的时候,文本框的高度才会减少...,那么 textarea 的高度自然就是其中文字内容高度了。

19.9K50

精确计算微信小程序scrollview高度,全机型适配

所以要计算 scroll-view 的高度可以得出下面 公式: scroll-view 的高度 = 页面可用高度 - tab高度 - title高度 - 10 - 10 为什么减两个 10 呢?...因为下面调用接口获取可用屏幕高度时得到的就是 px 。 二、计算变量的高度 2.1 计算单个节点高度 上面的公式中的变量有:页面可用高度, title 的高度,tab 的高度。...这里需要计算的就是 页面可用高度 和 title 的高度,因为为了简单 tab 的高度是写死的 50px, 当然不写死也没关系,在父组件中计算 tab 的高度传给子组件就好。...注意计算的时候要用 windowHeight,这样算出来的高度才是对的。screenHeight是手机的屏幕高度,包含了手机的状态栏和小程序标题栏。 有了可用屏幕高度,还需要元素的高度。...以上就是精确计算微信小程序scrollview高度的方法,从此再也不担心 scroll-view 高度错乱了!

2.5K20

GeometryReader :好东西还是坏东西?

一个容器视图,根据其自身大小和坐标空间定义其内容。 严格来讲,我并不完全赞同上述描述。这并非因为存在事实上的错误,而是这种表述可能会引起用户的误解。...官方文档中的“定义其内容( defines its content )”这一表述容易让人误以为 GeometryReader 的主要功能是主动影响子视图,或者说其获取的几何信息主要用于子视图,但实际上,...提供的建议宽度,并根据这个宽度计算出所需的高度。...然后,通过 frame 调整 GeometryReader 向 ScrollView 提交的需求尺寸高度。这样,我们就能得到期望的显示结果。...GeometryReader 常用于需要限定比例的场景,例如让视图占据可用空间的 25% 宽度,或者像上文中根据给定的高宽比来计算高度

45670

SwiftUI 的方式进行布局

有关这方面的内容,请参阅 SwiftUI 布局 —— 尺寸( 下 )[4] 一文中“面子和里子”章节。...有关建议尺寸、需求尺寸等内容,请参阅 SwiftUI 布局 —— 尺寸( 上 )[5] 一文 三、NameSpace 从 3.0 版本( iOS 15 )开始,SwiftUI 提供了新的 NameSpace...这意味着,在 ScrollView 中,子视图最好明确的设定尺寸( 提出明确地需求尺寸 )。因此,在上面的代码中,需要通过屏幕高度和视图一的高度差来计算上方的空白站位视图高度。...VStack 的纵向需求尺寸为视图一与视图二的高度和,而通过 overlay 嵌套,纵向需求尺寸仅为视图二的高度( 尽管视觉上视图一在视图二的上方且紧密相连 )。...有关转场动画的更多内容,请参阅 SwiftUI 的动画机制[8] 一文 八、Layout 协议 在 4.0 版本中,SwiftUI 增加了 Layout 协议,通过该协议,开发者可以针对特定的场景,创建自定义布局容器

3.2K00

SwiftUI 的方式进行布局

有关这方面的内容,请参阅 SwiftUI 布局 —— 尺寸( 下 ) 一文中“面子和里子”章节。...有关建议尺寸、需求尺寸等内容,请参阅 SwiftUI 布局 —— 尺寸( 上 ) 一文 三、NameSpace 从 3.0 版本( iOS 15 )开始,SwiftUI 提供了新的 NameSpace...这意味着,在 ScrollView 中,子视图最好明确的设定尺寸( 提出明确地需求尺寸 )。因此,在上面的代码中,需要通过屏幕高度和视图一的高度差来计算上方的空白站位视图高度。...VStack 的纵向需求尺寸为视图一与视图二的高度和,而通过 overlay 嵌套,纵向需求尺寸仅为视图二的高度( 尽管视觉上视图一在视图二的上方且紧密相连 )。...有关转场动画的更多内容,请参阅 SwiftUI 的动画机制 一文 八、Layout 协议 在 4.0 版本中,SwiftUI 增加了 Layout 协议,通过该协议,开发者可以针对特定的场景,创建自定义布局容器

4.7K80

掌握 SwiftUI 的 Safe Area

掌握 SwiftUI 的 Safe Area 访问我的博客 www.fatbobman.com[1] 可以获得更好的阅读体验 Safe Area(安全区域)是指不与导航栏、标签栏、工具栏或其他视图控制器提供的视图重叠的内容空间...SwiftUI 同时提供了一些方法和工具让开发者对安全区域有所控制。 本文将探讨如何在 SwiftUI 中获取 SafeAreaInsets、将视图绘制到安全区域之外、修改视图的安全区域等内容。...在 SwiftUI 中,开发者通常只有在需要获取 StatusBar + NavBar 的高度或 HomeIndeicator + TabBar 的高度时才会使用到 safeAreaInsets 。...使用 safeAreaInset 扩展安全区域 在 SwiftUI 中,所有基于 UIScrollView 的组件(ScrollView、List、Form),在默认情况下都会充满整个屏幕,但仍可确保我们可以在安全区域内看到所有的内容...safeAreaInsetList2 遗憾的是,在 iOS 15 之前,SwiftUI 并没有提供调整视图安全区的手段,如果我们想通过 SwiftUI 的手段创建一个自定义 Tabbar 时,列表中最后的内容将被

7.5K31

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

访问我的博客 www.fatbobman.com[1] 可以获得更好的阅读体验以及最新的更新内容。...遗憾的是,SwiftUI 并没有提供这方面的 API 。本文将介绍几种在 SwiftUI 中获取当前滚动状态的方法,每种方法都有各自的优势和局限性。...和 List .introspectScrollView { scrollView in scrollView.delegate = delegate...目前 SwiftUI 在内部的实现上去 UIKit( AppKit )化很明显,比如,本节介绍的方法在 SwiftUI 4.0 中已经失效方法二:Runloop我第一次接触 Runloop 是在学习 Combine...判断的准确度没有前两种方式高当可滚动组件中的内容出现了非滚动引起的尺寸或位置的变化( 例如 List 中某个视图的尺寸发生了动态变化 ),本方式会误判断为发生了滚动,但在视图的变化结束后,状态会马上恢复到滚动结束滚动开始后

3.7K40

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

前言 WWDC 23 已经到来,SwiftUI 框架中有很多改变和新增的功能。在本文中将主要介绍 SwiftUI 中数据流、动画、ScrollView、搜索、新手势等功能的新变化。...数据流 Swift 5.9 引入了宏功能,成为 SwiftUI 数据流的核心。SwiftUI 不再使用 Combine,而是使用新的 Observation 框架。...框架引入了新的 PhaseAnimator 视图,它遍历阶段序列,允许为每个阶段提供不同的动画,并在阶段更改时更新内容。...ScrollView 今年 ScrollView 有了很多优秀的新增功能。首先,可以使用 scrollPosition 视图修饰符来观察内容偏移量。...特别感谢 Swift社区 编辑部的每一位编辑,感谢大家的辛苦付出,为 Swift社区 提供优质内容,为 Swift 语言的发展贡献自己的力量。 - EOF -

32320

如何在 SwiftUI 中创建条形图

前言 条形图以矩形条的形式呈现数据的类别,其宽度和高度与它们表示的值成比例。本文将展示如何创建一个垂直条形图,其中矩形的高度将代表每个类别的值。...系列文章 如何在 SwiftUI 中创建条形图 SwiftUI 中的水平条形图 在 iOS 16 中用 SwiftUI Charts 创建一个折线图 在 iOS16 中用 SwiftUI 图表定制一个线图...很容易将部分内容提取到子视图中,以便每个部分都很小且易于维护。从将包含 BarChartView 以及可能的其他文本或数据的视图开始。...它需要每一条数据的名称和值以及最大值和可用的条形高度。每个条形图都表示为圆角矩形,条形高度相对于最大条形高度设置。条形的颜色设置为纯蓝色。...图标被设置为固定大小,视图被嵌入到 ScrollView 中,以便在设备旋转时滚动。

5.1K10

让动态的 iframe 内容高度自适应

使用iframe加载其他页面的时候,需要自适应iframe的高度 这里加载了两个不同内容高度的页面至iframe中 1....有滚动条,可以看到iframe并不会因为内容高度自动撑开 2....内容长这样,但可以看到,高度定死了,没有自适应 3....可以发现,高度虽然能自适应,不过只支持高度了“从小到大”的自适应 如iframe2的内容比iframe1的高,后者动态加载出前者能自适应,但前者动态加载出后者就不行了,这种高度减小不了 最后的解决办法是...在onload事件中动态设置高度为body高度之前,先将原高度还原为auto或空值 可以用setTimeout(fn,0)将高度设置放到下一轮事件循环中执行,或者在 onbeforeunload 事件中先把高度设置为

6.6K51

SwiftUI 视图的生命周期研究

视图值树通常只保存当前布局、渲染所需的内容(个别情况下,会缓存少数不参与布局、渲染的视图值),在 app 的生命周期中,随着 State 的变化而不断地变化。...什么是视图 开发者更习惯将符合 View 协议的结构体或结构体实例视作视图,而在 SwiftUI 的角度,视图值树上的节点内容,才是它所认为的视图。...以上四种方式必须对 body 中的内容进行解析后才能完成。•下文中会提到,在视图值树的视图生命周期内,无论创建多少个实例都只会保留一份依赖项副本。...另外,由于 List 和 LazyVStack 的布局逻辑不同(List 的容器高度是固定的,LazyVStack 的容器高度是不固定的,向下预估的),两者触发 onDisappear 的时机点也不同。...开发者即使不了解文本上述的内容,也可以让 SwiftUI 的代码在日常中发挥出不错的效率。但如果能够对视图的生命周期有更深入的了解,将可以帮助开发者在一些特定的场合提高代码的执行效率。

4.3K30
领券