SwiftUI 高级用法之如何捕获截取事件实现隐藏收起展开PreferenceKey(教程含源码)
2023-09-11 14:18:30 时间
实战需求
SwiftUI 高级用法之如何捕获截取事件实现隐藏收起展开
本文价值与收获
看完本文后,您将能够作出下面的界面
基础知识
SwiftUI提供了PreferenceKeys的功能,这是SwiftUI通过视图树传递信息的方式。PreferenceKey 是一种通用协议,需要一个静态函数和一个静态默认值:
struct SizePreferenceKey: PreferenceKey {
static var defaultValue: CGSize = .zero
static func reduce(value: inout CGSize, nextValue: () -> CGSize) {}
}
- defaultValue 是当视图对此键没有显式值时使用的值
- reduce(value:nextValue:) 将树中找到的键值与新的键值相结合
PreferenceKey示例,存储孩子的实际尺寸:
var body: some View {
childView
.background(
GeometryReader { geometryProxy in
Color.clear
.preference(key: SizePreferenceKey.self, value: geometryProxy.size)
}
)
}
相关文章
- Unity3D开发之NGUI点击事件穿透响应处理
- 分析需求引入事件机制
- 关于iframe里的子页面如何调取父级页面里的事件(子调父)
- 跳出手掌心——如何立即触发UIButton边界事件
- 事件循环深度学习
- SAP Spartacus category navigation页面鼠标进入事件的处理
- Atitit..组件化事件化的编程模型--(2)---------Web datagridview 服务器端控件的实现原理and总结
- Android AccessibilityService 事件分发原理分析总结
- Qt自定义事件
- Qt事件分发机制源码分析之QApplication对象构建过程
- 【Qt源码笔记】Qt事件与Windows消息循环的联系
- ijkplayer源码分析 —— 事件消息设计
- 【nodejs原理&源码赏析(7)】【译】Node.js中的事件循环,定时器和process.nextTick
- 事件,使用.net自带委托EventHandler
- 路由事件、附加事件
- JS中的事件监听
- 【redis源码学习】事件机制