SwiftUI判断ScrollView是否滑动到底及ChildSizeReader尺寸读取示例
ScrollView 滑动到底的判断和子视图尺寸读取这事,在 SwiftUI 里还真不算直接。系统没给现成的 API,得自己想办法绕过去。文章里用GeometryReader
搞定了这两个需求,方式还挺巧的,代码也不复杂。
ScrollView 的滑到底判断,靠监听GeometryReader
的偏移值来实现。你可以设一个PreferenceKey
来收集位置变化,一旦检测到滑到底的临界位置,就可以触发加载、刷新之类的逻辑。响应也快,兼容性也还不错。
至于ChildSizeReader
,SwiftUI 虽然没这个组件名,但你可以手动封装一个。用GeometryReader
取子视图尺寸,再通过闭包传出去,动态布局问题就迎刃而解了。这种做法挺适合需要自适应的场景,比如动态撑开的卡片、异形弹窗啥的。
这两个技巧,在列表组件、聊天窗口、加载更多那种需求里有用。比如:用户快滑到底了,自动加载;又比如你需要根据内容动态调节容器大小,就能派上用场。想看看具体例子,可以翻下文章里的ChildSizeReaderDemo
项目。
,这篇文章对刚上手 SwiftUI 交互和布局的同学蛮友好。代码清晰,逻辑也实用。如果你在做带滚动和动态尺寸的界面,不妨试试看。
25.38KB
文件大小:
评论区