问题标签 [swiftui-geometryeffect]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
647 浏览

swiftui - SwiftUI:输入无效时文本字段抖动动画

当用户按下“保存”按钮并且输入无效时,我想创建一个摇动动画。我的第一种方法是这样(为了简化,我删除了修饰符,而不是针对这种情况的相关属性):

看法:

视图模型:

但是这个解决方案并没有真正起作用。当我第一次按下按钮时,没有任何反应。之后,当我更改文本字段时,它开始抖动。

0 投票
1 回答
171 浏览

swiftui - SwiftUI:使用matchedGeometryEffect控制视图上的zIndex

我正在 SwiftUI 中构建一个自定义 SegmentedPicker,其中选择器调整其大小以适合每个选择器项目的框架。我已经按照这篇文章(检查视图树PreferenceKey)的启发使用 s 来实现统一大小的项目,如下所示:

在此处输入图像描述

我认为我可以大大简化我的实现,并通过使用PreferencyKeys 来完全避免使用 s .matchedGeometryEffect()。我的想法是仅在选择该项目时在每个项目后面显示一个选择器,并使用.matchedGeometryEffect(). 除了选择器将位于先前选择的项目前面的问题之外,几乎一切都在工作。我尝试显式设置zIndex,但它似乎不影响结果:

在此处输入图像描述

编码:

并在ContentView

任何想法如何解决这一问题?

0 投票
0 回答
22 浏览

swiftui-geometryeffect - SwiftUI 在具有 MatchedGeometryEffect 的列表单元格之间传递视图

我正在尝试在同一列表视图的单元格之间传递视图。我在网上看到了 0 个例子。每个示例都是为了让 ForEach 显示视图。

我知道我可以使用 ScrollView,但我对学习使用 List 视图特别感兴趣。

这是我的单元格的代码:

它不起作用..当我实际上希望将视图从一个单元格动画传递到另一个单元格时,它向我显示了选定单元格和前一个选定单元格的视图。

有人知道我在做什么错吗?

0 投票
1 回答
111 浏览

ios - 使用 TabView 时 SwiftUI 动画损坏

我在 SwiftUI 视图中有一个工作动画,当我将该视图放入 a 时,它会中断,TabView转到另一个选项卡并返回。我该如何解决?

我的观点更复杂,但我将其归结为以下几点:

这是该代码的屏幕录像。点击时RectView上下动画流畅。Move切换Tab 2并返回后,我第一次点击Move时,它会在没有动画的情况下跳转。下一个水龙头再次动画。

动画

实际上,视图模型更复杂。状态(在这种情况下:moved)在按下按钮后一段时间会改变。一些工作在后台线程上完成,然后在主线程上触发状态更改。这就是为什么我不能将动画移动到Button动作中的原因。

视图也更复杂。RectView被从视图层次结构的深处移除并完全添加到其他地方。

该方法func animation(_ animation: Animation?)在 iOS 15 中已弃用。该问题在 iOS 14 中已经永远存在。我还尝试删除animation修饰符并将其moved = !moved放入一个withAnimation { }块中。结果还是一样。

我怎么能在保留的同时解决这个问题TabView

0 投票
1 回答
139 浏览

ios - 使用 AsyncImage iOS 15 匹配几何效果

考虑以下示例:

这里有一个辅助方法:

这会产生:

演示

我注意到这里有两件事我想解决

  1. 在两种状态之间转换时闪烁的白色效果。
  2. 我注意到,因为我们使用的是AsyncImage,当showSplash更改 AsyncImages 时,有时只会碰到placeholder块。结果,过渡变得非常不稳定。我使用资产文件中的静态图像对此进行了测试,然后过渡变得平滑。我还尝试在 AsyncImage 上创建缓存机制,但有时仍会遇到placeholder阻塞问题。

很想听听任何想法:) 谢谢!