问题标签 [swiftui-animation]

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 回答
203 浏览

ios - 用 zIndex 交换两个元素 onTapGesture 为动画过渡更新

我使用matchedGeometryEffectTapGesture来交换带有动画过渡的两个元素。

动画按预期工作,但我想在动画期间更改元素的zIndex

我从这个例子开始:https
://www.appcoda.com/matchedgeometryeffect/ 并根据我的需要进行了调整:

动画

我希望动画元素始终位于其他元素之上。
zIndex 必须在动画结束时重置

这可以通过使用TapGesture吗?

Xcode 版本 12.0.1 (12A7300)
iOS 14.0

0 投票
1 回答
202 浏览

swift - matchGeometryEffect 并不总是为位置变化设置动画

我的目标是模拟一个从一个方块跳到另一个方块的棋子。

动画

点击 1 - 从位置 0 到位置 1:OK
点击 2 - 从位置 1 到位置 2:OK
点击 3 - 从位置 3 到位置 0:KO
点击 4 - 从位置 0 到位置 1:OK
点击 5 - 从位置 1到位置 2:OK
点击 6 - 从位置 3 到位置 0:KO
点击 7 - 从位置 0 到位置 1:OK
...

https://developer.apple.com/documentation/swiftui/view/matchedgeometryeffect(id:in:properties:anchor:issource:)

如果在同一事务中插入一个视图,而另一个具有相同键的视图被删除,系统将在窗口空间中插入它们的框架矩形,以使看起来有一个视图从其旧位置移动到其新位置。

我错过了什么吗?
有什么限制吗?

Xcode 版本 12.1 (12A7403) iOS 14.0

0 投票
2 回答
36 浏览

swiftui - 为什么文本在加载动画时出现?

我想在 NavigationBarTitle 后面隐藏一些文本并在用户按下按钮时显示它,它工作正常。唯一的问题是动画。在加载时,我们看到文本在 NavigationBarTitle 后面移动,这不是我想要的。

我怎样才能解决这个问题?

我尝试了偏移和位置,但它不起作用......

代码 :

0 投票
1 回答
361 浏览

swiftui - SwiftUI Chaning 动画

我正在尝试在 SwiftUI 中链接两个动画。但是,按下按钮时第一个动画没有动画。我在这里找到了这种链接动画的方法:Chaining animations in SwiftUI

0 投票
1 回答
1758 浏览

animation - SwiftUI 五彩纸屑动画

注意:我解决了这个问题。如果您对动画感兴趣,我使用 SPM 创建了一个包,可在https://github.com/simibac/ConfettiSwiftUI上找到

所以我想在 SwiftUI 中创建一个五彩纸屑动画。这是我到目前为止所拥有的:

这一切都按预期工作,并使用以下代码完成:

现在我想用动画五彩纸屑视图替换 Heart Emoji。因此,我创建了以下视图:

在此处输入图像描述

这也可以按预期工作。但是,如果我替换为Text("❤️")ConfettiView()我得到了一些意想不到的动画,如下所示。(我将五彩纸屑的数量减少到 1,以便更好地观察动画)。动画打破了什么?

在此处输入图像描述

0 投票
1 回答
359 浏览

swiftui - 为什么当我在 UIHostingController 中使用 SwiftUI-transition 时,它不能按预期工作?

我正在尝试为需要显示日期的视图获得一个很好的过渡。我为视图提供了一个 ID,以便 SwiftUI 知道它是一个新标签并通过过渡对其进行动画处理。这是没有格式化程序和样式的精简版本,并且持续时间较长,以实现更好的可视化:

结果,它按预期工作,旧标签正在动画,新标签正在动画:

结果1

但是一旦我将它包装在 UIHostingController 中:

结果,新标签没有动画,而只是插入到它的最终位置,而旧标签正在动画出来:

在此处输入图像描述

我有更复杂的托管控制器,但这说明了这个问题。我更新托管控制器视图的方式是否有问题,或者这是 SwiftUI 中的错误,还是其他什么?

0 投票
1 回答
647 浏览

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

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

看法:

视图模型:

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

0 投票
0 回答
447 浏览

ios - SwiftUI LazyVGrid 动画更改“页面”

我试图将整个LazyVGrid页面视为页面,并在向前或向后切换时设置动画。一个简单的幻灯片动画就可以了。

我目前有一些类似的东西

cells当你点击fwd或按钮时,我有页面设置为状态back,它们会立即重新渲染。但是,在按下按钮时设置向前/向后滑动会很酷。我无法用transitionand轻松解决这个问题animation

如果有一个完全不同的图书馆这样做,我愿意尝试。

非常感谢!

0 投票
2 回答
947 浏览

ios - SwiftUI - 如何覆盖嵌套的偏移/位置动画?

考虑这个简单的例子:

点击生成的圆圈时会产生以下动画:

在此处输入图像描述

嵌套圆使用其自己的计时功能(弹簧)动画到其新的全局位置,而外圆/父视图使​​用其 easeInOut 计时功能动画到新的全局位置。理想情况下,如果修饰符在父视图抽象级别上工作(在这种情况下,offset,还有类似的东西position),所有子级都将使用父级计时函数进行动画处理。

这可能是因为 SwiftUI 渲染引擎在布局过程中为视图层次结构中所有受影响的子项计算新的全局属性,并根据附加的最具体的动画修饰符对每个属性的更改进行动画处理(即使在这种情况下,相对位置父母中的孩子不会改变)。当视图的子视图可能运行自己的复杂动画(父视图不知道也不应该知道)时,这使得做像正确翻译视图这样简单的事情变得非常困难。

我注意到的另一个怪癖是,在这个特定的示例中,在偏移修改器之前animation(nil)添加一个修改器会破坏外圆上的动画,尽管其余部分直接附加到偏移修改器。这违反了我对这些修改器如何链接的理解,其中(根据此来源)动画修改器适用于它需要的所有视图,直到下一个嵌套动画修改器。.easeInOut

0 投票
0 回答
41 浏览

swiftui - 动画影响整个层次

我有一段非常简单的代码,可以在 swiftui 静态预览中正确显示,并在 iOS 中正确运行。但是,当我选择 macOS 目标和实时预览时,整个层次结构从顶角反复向下移动。

这是我正在试验的代码(使用 Xcode 版本 12.3 (12C33)):

我的期望是它应该从屏幕的左上角(1200x1200)绘制一个纯蓝色矩形。然后它应该在其顶部绘制一个白色矩形,也在左上角,大小为 100x100。白色矩形用虚线描边,它应该为其相位设置动画 - 我期待在虚线矩形上看到爬行蚂蚁的效果。

但是,当我为 MacOS 选择“实时预览”时,它会创建一个带有预期蓝色矩形和白色虚线的窗口。但是整个 ZStack 从左上角反复向下移动。

这是 macOS 上 swiftui 中的错误吗?还是我在这里缺少什么?

如果我使用 VStack 而不是 ZStack,我会观察到类似的行为。