问题标签 [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.
swift - SwiftUI - 滑动文本动画和定位
在我进一步了解 SwiftUI 的过程中,我仍然对将我的元素定位在ZStack
.
目标是“简单”,如果文本太长,我想要一个在定义区域内滑动的文本。假设我有一个 50px 的区域,文本需要 100。我希望文本从右向左滑动,然后从左向右滑动。
目前,我的代码如下所示:
你有什么建议如何在其父级中垂直居中文本并制作从良好位置开始的动画?
感谢您对未来的任何帮助,非常感谢!
编辑:
我重组了我的代码,并改变了我正在做的几件事。
现在动画看起来很不错,除了我在左右两边都有填充,我不明白为什么。
Edit2:我还注意到通过更改text.font = UIFont.systemFont(ofSize: 20)
bytext.font = UIFont.systemFont(ofSize: 15)
可以使文本正确匹配。我不明白系统字体与SwiftUI
或之间是否有区别UIKit
。它不应该..
在我的情况下,使用解决方案进行最终编辑:
这是视觉上的结果。
ios - 多个动画在 SwiftUI 中无法按预期工作
我想用永远重复的动画创建一个脉动的圆圈。当动画方向改变时,它应该有大小的渐变和颜色的瞬间变化。我有两个不同的动画,但只有最后一个对两者都有影响(大小和颜色变化)。
swift - 如何使用 SwiftUI 和 CoreData (@FetchRequest) 对动态列表排序进行动画处理
我有一个显示 CoreData FetchRequest 的列表,并且我有一个 Picker 可以更改列表的排序方式。我实现这个的当前方式看起来像:
子视图看起来像:
但是,当我更改排序选项时,列表不会为重新排序设置动画(可能是由于整个ItemListView
被重建。如果我在父视图中添加.animation(.default)
,ItemListView()
列表在重新排序时会动画,但从导航返回时也会有奇怪的动画其他视图。我似乎无法弄清楚我可以在哪里添加一个withAnimation { }
块。或者是否有更好的方法来解决这个问题,它对 SwiftUI 来说更自然,从而允许一些默认动画?
swiftui - 使用 ForEach 插入的 SwiftUI 视图未随动画更新
我创建了一个插入三个按钮的简单函数。我想要一个单独的按钮在按下时旋转。我最初的尝试是这样的:
它可以工作,但问题是当你按下任何按钮时每个按钮都会动画,因为 animationAmount2 是一个 @State 属性,所以当它更新时,每个按钮都会动画,而不仅仅是按下的那个。
我的下一个想法是创建一个自定义按钮并在其中插入动画代码和属性,以便按钮单独动画。结果是:
我现在在 ForEach 中调用这个函数,它完美地插入了按钮,并且只有我按下的按钮会旋转。问题是当视图刷新时它永远不会重绘按钮。ForEach 正在执行,但它只是忽略了对 getFlagView 的调用。
在 CustomButton 调用的末尾添加 .id(UUID()) 修复了以下问题:
现在,当视图按预期刷新时,按钮会重绘,但动画不起作用。我真的不知道为什么添加 UUID 会破坏动画。
swiftui - SwiftUI 位置和帧动画在 iOS 14 中损坏
我有一个进度视图,其进度/宽度可以设置动画。该动画可自行运行。但是,在某些情况下,父视图会更改其布局,并在进度条上方添加一个新视图。然后,进度视图向下移动,为新视图腾出空间。这也是动画的。在 iOS 13 中同时出现两种动画时,进度视图会向下移动,并且蓝色进度条的宽度会同时进行动画处理。在 iOS 14 中,进度视图向下移动,但蓝色进度条也使用其动画来动画位置变化。在 iOS 13 中,它仅用于为宽度设置动画。这使动画看起来好像进度条飞入了进度视图,并且是错误的并且看起来很奇怪。
我使用以下代码复制了我的应用程序中的代码。此代码还用于录制视频。
更新
这是仍在运行 iOS 13.7 的 iPad 上使用相同代码的原始动画。我只是消除了延迟并增加了时间以使不同的动画更加明显。
更新 2
回答问题时有些困惑,所以我复制了一些框架并将它们放入屏幕截图中。我希望这有助于理解我的问题。左侧是 iOS 14 上的动画,其中包含不需要的行为。如您所见,某些图像中没有出现蓝色进度条。在其他图像中,它只是部分可见。右侧是 iOS 13 动画。图像上的框架(以及所有其他框架)显示完全可见的蓝色进度条。它始终完全可见并位于背景之上。
我不明白 iOS 14(或者可能是 Swift 5.3 或其他)中的哪些变化导致动画不同,我找不到解决这个问题的方法。
swift - 为什么我的 SwiftUI 过渡没有动画效果?
我有一个基于一些状态变量的观点。这些状态由 API 调用的完成块设置。它们显示bookings
为ForEach
列表,我希望它们与slide
过渡一起出现。
slide
过渡效果很好。由于我添加了!isLoading
检查,这些动画不再显示。现在出现的所有动画都是淡入淡出的ProgressView
。删除!isLoading
检查时,交错的幻灯片动画又回来了,但我想保留此检查,以便我可以正确处理加载状态。
这是重现该问题的独立代码:
SwiftUI 动画是否存在一个已知问题,即具有多个条件可能会导致过渡不出现?我该如何解决这个问题,以便在ProgressView
不删除!isLoading
检查的情况下保持交错动画和淡入淡出?
swiftui - 如何依次为视图设置动画
我想依次为屏幕上到达的视图设置动画。现在我的应用程序绘制了圆圈,它们同时到达屏幕。但是我希望第一个圆圈占据它的位置并且只有在这之后第二个圆圈才会开始它的动画等等。这个问题有什么解决方案?
ios - 防止 SwiftUI 动画覆盖嵌套的 withAnimation 块
我有一个带有可拖动组件(“弹性”文本)的屏幕,该组件在以非常突出的弹簧动画释放时会弹回。
有一些文本是异步进入的(在本例中,使用 a Timer
),我希望它能够很好地淡入,同时 Springy 标签平滑地向上移动以为它腾出空间。
我在 VStack 中添加了一个动画,当异步加载的文本淡入时,它会按照我的意愿转换。但是,这会破坏“Springy”文本上的弹簧动画。
这里有一个注释掉的动画,如果将 1 秒动画切换到该位置,异步加载的文本会淡入,但在动画开始时,“有弹性”的文本会向上跳而不是向上滑动。
我怎样才能让两个动画都按照我的意愿工作?
扩展问题,基于 Asperi 的回答。
现在,假设我在这个 main 中有多个元素VStack
,我想在它们进入时对其进行动画处理。
- 为我想要动画的每个部分添加一个单独的
.animation
修改器是一个很好的解决方案吗?value
在下面的扩展示例中,这部分是:
- 我在这里使用 3 种方法来确定是否显示一个部分。为了简单起见,我在最初的示例中使用,但在我的实际场景中,我认为使用该方法而不是设置单独的或检查空字符串
Bool
是最有意义的。在动画方面使用它是否有缺点,或者这样好吗?考虑到 Asperi 的解决方案,它似乎在这个例子中运行良好。String?
Bool
这是带有新修改的完整示例:
swift - 动画 SwiftUI 文本编辑器文本
我想添加动画,以便当我单击按钮时,我的 TextEditor(在 iOS 14 中)中的文本会慢慢淡出(假设持续时间为 1.5)。
这是我正在使用的代码,但无法让文本淡出。关于我做错了什么的任何想法?
此外,我确实尝试在按钮的操作中取出withAnimation
函数调用,如此处所示,但这并没有解决它。