问题标签 [uiviewpropertyanimator]
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.
ios - 如何根据后者的进度为已经运行的动画添加动画?
客观的
构建一个复杂的动画,其中一些动作会根据其进度触发。
问题
是否可以检查 a 的进度UIViewPropertyAnimator
并在达到给定分数时添加动画完成:
- 不使用
UIView.animateKeyframes
- 不需要用户干预
换句话说,当动画师达到给定的 fractionComplete 时,会添加一些动画。
问题
完整的动画包括不同对象的多个动画(存储在一个数组中)。我需要在给定时间(基于完成百分比)添加动画,并在某些动画完成时添加动作。
感谢您的帮助!
ios - 之前从 UIViewPropertyAnimator 完成一些动画
我正在寻找一种将一些动画添加到一个比其他动画UIViewPropertyAnimator
更早完成的方法。
UIViewPropertyAnimator
例如,有一种方法可以延迟添加动画
animator.addAnimations(animation: (()-> Void), delayFactor: CGFloat)
所以动画在 adelayFactor
的50% 处开始0.5
。
我搜索类似的东西
animator.addAnimations(animation: (()->Void), realtiveDuration: CGFloat)
所以动画在 50% 的持续时间后relativeDuration
结束0.5
。
经过一番研究,我找到了一个解决方案
存档此行为。问题是,我想在某种自动化中使用它,我迭代一些元素并为每个元素调用一个方法:
使用例如该方法时效果很好
animator.addAnimations(animation: element.animation(element.view), delayFactor: 0.5)
但我不能在里面调用它
也许你们中的一些人有解决方案?我正在考虑覆盖UIViewPropertyAnimator
例如添加所询问的方法animator.addAnimations(animation: (()->Void), realtiveDuration: CGFloat)
或其他内容,但将我的舒适区留在那里。
swift - 提前完成 UIViewPropertyAnimator 的一些动画
我正在寻找一种将一些动画添加到一个比其他动画UIViewPropertyAnimator
更早完成的方法。
UIViewPropertyAnimator
例如,有一种方法可以延迟添加动画
animator.addAnimations(animation: (()-> Void), delayFactor: CGFloat)
所以动画在 adelayFactor
的50% 处开始0.5
。
我搜索类似的东西
animator.addAnimations(animation: (()->Void), realtiveDuration: CGFloat)
所以动画在 50% 的持续时间后relativeDuration
结束0.5
。
经过一番研究,我找到了一个解决方案
存档此行为。问题是,我还想用它UIPercentDrivenInteractiveTransition
来擦洗动画。可悲的是,这不适用于该animateKeyframes
方法。
有其他解决方案来存档此行为吗?
ios - 如何在 Swift 中按顺序对一组图像视图进行动画处理?
我一直试图弄清楚这一点,但无济于事。基本上,我有一个 UIImageViews 数组,我想按顺序对它们进行 1×1 动画处理。现在,它们都正确但同时进行动画处理。此外,我希望底部的代码仅在所有动画完成后执行,因为现在它似乎是同时执行的。我对 swift 很陌生,所以我想我不完全理解for循环是如何工作的?在我看来,这段代码应该循环遍历数组中的所有图像视图,并且只有在它完成之后才应该执行底部的代码。应该在循环的每次迭代中调用 highlightCards 方法,但这似乎也没有发生。我知道阵列在移动正确的图像时正确启动。
这是代码:
playCards是一个带有卡片索引的整数数组
game.board是一个卡片对象数组(UIImageView)
highlightCards () 只突出显示当前可玩的卡片
完成块中的代码仅用于物流,我知道它工作正常
“设置新游戏”注释下的代码是所有动画完成后才应该执行的代码
ios - 无法使用类型为“(() -> (), delayFactor: Double)”的参数列表调用“addAnimations”
我UIViewPropertyAnimator
用来控制多个动画的进度。我有一个 UIView 子类的二维数组。我想一次显示每个索引处的所有元素。出于某种原因,编译器不允许我使用addAnimations(_:delayFactor:)
方法延迟添加新动画。有人可以告诉我我在这里做错了什么吗?
当我尝试调用 .addAnimations 时,我收到以下消息:
Cannot invoke 'addAnimations' with an argument list of type '(() -> (), delayFactor: Double)'
我在这里做错了什么?在初始化程序中调用的相同闭包UIViewPropertyAnimator
可以正常工作。
ios - iOS 13 打破 UIViewPropertyAnimator 过渡
我们WeatherKit
只能在 iOS 13 测试版上重现中断的过渡。我们不确定这是一个UIKit
错误还是我们做错了什么。
在 iOS 13 之前的一系列UIViewPropertyAnimator
工作中,自从 iOS 13(通过所有测试版)以来,动画帧没有正确更新。例如,我有一个UIViewPropertyAnimator
调用labelAnimator
,它将标签动画到某个特定CGRect
的,这CGRect
是不被尊重的,并且标签在其他地方动画,如视频中所示。
很好奇,如果我弄乱了数组中的转换顺序,底部工作表工作正常,唯一一个错误的动画是温度标签。
这是为整个视图设置动画的代码:
这是 iOS 13 中问题的视频以及它目前在 iOS 12 中的工作方式。
swift - iOS 13.x 中的重复/自动反转动画
以前在swift中你可以这样做:
UIView.setAnimationRepeatCount
但是,现在和上有一条弃用消息UIView.setAnimationRepeatAutoreverses
。有人知道他们被什么替换了吗?我还能用UIViewPropertyAnimator
吗,还是我必须去类似的东西CABasicAnimation
?
消息是:
'setAnimationRepeatCount' 在 iOS 13.0 中已弃用:改用基于块的动画 API
'setAnimationRepeatAutoreverses' 在 iOS 13.0 中已弃用:改用基于块的动画 API
position - UIViewPropertyAnimator 位置重置
我有一个小问题。我正在尝试像 Instagram 一样创建动画进度条。它在所有情况下都能正常工作,除非我想展示上一个项目。断点说当我切换到上一个项目时, UIViewPropertyAnimator 位置保持在 .end 状态,所以它立即调用它的完成并“返回”到下一个项目。所以我的问题是 - 当动画师完成它的工作时,如何将它的位置重置回 .start 然后切换下一个项目?