SwiftUI使用MatchedGeometryEffect快速同步不同继承层级中视图的位置和尺寸

在这里插入图片描述



功能需求

在SwiftUI中,我们有时希望将两个或多个视图放置在相同位置上,而不管它们在哪个视图继承层级中。

我们曾在 SwiftUI任意继承层级中视图被裁剪显示不全的解决方案 博文中讨论过一种解决方案。

不过该方案有两个小问题:

  1. 代码比较复杂
  2. 视图被多次刷新后才会“稳定”(即会被多次重建,然后重建结果被丢弃)

在这里插入图片描述

如上图所示,使用本文介绍的新方法,我们在拖拽滚动视图时,视图一直保持“稳定”状态,即不会被反复多次重建。

该方法可以用来同步SwiftUI中任何视图之间的大小和位置。

So,废话少叙,Let’s do it!



功能分析

1. 旧方法的"缺陷"

看过之前博文代码的童鞋都知道,我们是用PreferenceKey机制来实现的。

不过,正如之前提到的那样,这种方法有两个问题。

首先是它实现起来比较复杂,需要额外添加多个辅

猜你喜欢

转载自blog.csdn.net/mydo/article/details/126207474