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

Posted 大熊猫侯佩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SwiftUI使用MatchedGeometryEffect快速同步不同继承层级中视图的位置和尺寸相关的知识,希望对你有一定的参考价值。



功能需求

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

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

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

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

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

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

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



功能分析

1. 旧方法的"缺陷"

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

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

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

以上是关于SwiftUI使用MatchedGeometryEffect快速同步不同继承层级中视图的位置和尺寸的主要内容,如果未能解决你的问题,请参考以下文章

使用 SwiftUI 实现应用内购买 [关闭]

SwiftUI 使用SwiftUI实现跑马灯效果 Marquee

SwiftUI 使用SwiftUI实现跑马灯效果 Marquee

SwiftUI 使用SwiftUI实现跑马灯效果 Marquee

SwiftUI 使用SwiftUI实现跑马灯效果 Marquee

SwiftUI 五