SwiftUI使用MatchedGeometryEffect快速同步不同继承层级中视图的位置和尺寸
Posted 大熊猫侯佩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SwiftUI使用MatchedGeometryEffect快速同步不同继承层级中视图的位置和尺寸相关的知识,希望对你有一定的参考价值。
功能需求
在SwiftUI中,我们有时希望将两个或多个视图放置在相同位置上,而不管它们在哪个视图继承层级中。
我们曾在 SwiftUI任意继承层级中视图被裁剪显示不全的解决方案 博文中讨论过一种解决方案。
不过该方案有两个小问题:
- 代码比较复杂
- 视图被多次刷新后才会“稳定”(即会被多次重建,然后重建结果被丢弃)
如上图所示,使用本文介绍的新方法,我们在拖拽滚动视图时,视图一直保持“稳定”状态,即不会被反复多次重建。
该方法可以用来同步SwiftUI中任何视图之间的大小和位置。
So,废话少叙,Let’s do it!
功能分析
1. 旧方法的"缺陷"
看过之前博文代码的童鞋都知道,我们是用PreferenceKey机制来实现的。
不过,正如之前提到的那样,这种方法有两个问题。
首先是它实现起来比较复杂,需要额外添加多个辅
以上是关于SwiftUI使用MatchedGeometryEffect快速同步不同继承层级中视图的位置和尺寸的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI 使用SwiftUI实现跑马灯效果 Marquee
SwiftUI 使用SwiftUI实现跑马灯效果 Marquee
SwiftUI 使用SwiftUI实现跑马灯效果 Marquee