问题标签 [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.

0 投票
2 回答
642 浏览

ios - 如何根据后者的进度为已经运行的动画添加动画?

客观的

构建一个复杂的动画,其中一些动作会根据其进度触发。

问题

是否可以检查 a 的进度UIViewPropertyAnimator并在达到给定分数时添加动画完成:

  • 不使用UIView.animateKeyframes
  • 不需要用户干预

换句话说,当动画师达到给定的 fractionComplete 时,会添加一些动画。

问题

完整的动画包括不同对象的多个动画(存储在一个数组中)。我需要在给定时间(基于完成百分比)添加动画,并在某些动画完成时添加动作

感谢您的帮助!

0 投票
1 回答
309 浏览

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)或其他内容,但将我的舒适区留在那里。

0 投票
0 回答
116 浏览

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方法。

有其他解决方案来存档此行为吗?

0 投票
1 回答
761 浏览

ios - 如何在 Swift 中按顺序对一组图像视图进行动画处理?

我一直试图弄清楚这一点,但无济于事。基本上,我有一个 UIImageViews 数组,我想按顺序对它们进行 1×1 动画处理。现在,它们都正确但同时进行动画处理。此外,我希望底部的代码仅在所有动画完成后执行,因为现在它似乎是同时执行的。我对 swift 很陌生,所以我想我不完全理解for循环是如何工作的?在我看来,这段代码应该循环遍历数组中的所有图像视图,并且只有在它完成之后才应该执行底部的代码。应该在循环的每次迭代中调用 highlightCards 方法,但这似乎也没有发生。我知道阵列在移动正确的图像时正确启动。

这是代码:

playCards是一个带有卡片索引的整数数组

game.board是一个卡片对象数组(UIImageView)

highlightCards () 只突出显示当前可玩的卡片

完成块中的代码仅用于物流,我知道它工作正常

“设置新游戏”注释下的代码是所有动画完成后才应该执行的代码

0 投票
1 回答
124 浏览

ios - 动画 UIImageView 从圆角右上角开始并以矩形结束

我正在尝试为ImageView 应该从小圆圈中出现的动画制作动画

像这样: 在此处输入图像描述

起始尺寸

y = startFrame.origin.y + startFrame.size.height - 10

仅限右上角

结束帧

原来的长方形

ImageView 内容不应该缩小或扩大,它的内容应该像上面的截图一样出现。

有可能在iOS中做吗?

0 投票
1 回答
31 浏览

ios - 无法使用类型为“(() -> (), delayFactor: Double)”的参数列表调用“addAnimations”

UIViewPropertyAnimator用来控制多个动画的进度。我有一个 UIView 子类的二维数组。我想一次显示每个索引处的所有元素。出于某种原因,编译器不允许我使用addAnimations(_:delayFactor:)方法延迟添加新动画。有人可以告诉我我在这里做错了什么吗?

当我尝试调用 .addAnimations 时,我收到以下消息: Cannot invoke 'addAnimations' with an argument list of type '(() -> (), delayFactor: Double)'

我在这里做错了什么?在初始化程序中调用的相同闭包UIViewPropertyAnimator可以正常工作。

0 投票
1 回答
1411 浏览

ios - iOS 13 打破 UIViewPropertyAnimator 过渡

我们WeatherKit只能在 iOS 13 测试版上重现中断的过渡。我们不确定这是一个UIKit错误还是我们做错了什么。

在 iOS 13 之前的一系列UIViewPropertyAnimator工作中,自从 iOS 13(通过所有测试版)以来,动画帧没有正确更新。例如,我有一个UIViewPropertyAnimator调用labelAnimator,它将标签动画到某个特定CGRect的,这CGRect是不被尊重的,并且标签在其他地方动画,如视频中所示。

很好奇,如果我弄乱了数组中的转换顺序,底部工作表工作正常,唯一一个错误的动画是温度标签。

这是为整个视图设置动画的代码:

这是 iOS 13 中问题视频以及它目前在 iOS 12 中的工作方式。

0 投票
1 回答
444 浏览

ios - UIViewPropertyAnimator 无法按预期工作

当用户点击 UIView 时,我正在尝试为 UIView 和 imageView 设置动画。这是我的代码:

预期行为: 当我点击一次 UIView 时,视图应该占据整个屏幕,并且 imageView 应该缩小一点。

问题 问题是,当我点击一次视图时,视图占据了整个屏幕,但 imageView 并没有缩小,只有在我第二次点击时才会缩小。

当我点击视图一次时,我希望这两个任务都能执行。我将添加一个 GIF 以帮助理解。

动图

0 投票
1 回答
1959 浏览

swift - iOS 13.x 中的重复/自动反转动画

以前在swift中你可以这样做:

UIView.setAnimationRepeatCount但是,现在和上有一条弃用消息UIView.setAnimationRepeatAutoreverses。有人知道他们被什么替换了吗?我还能用UIViewPropertyAnimator吗,还是我必须去类似的东西CABasicAnimation

消息是:

'setAnimationRepeatCount' 在 iOS 13.0 中已弃用:改用基于块的动画 API

'setAnimationRepeatAutoreverses' 在 iOS 13.0 中已弃用:改用基于块的动画 API

0 投票
1 回答
112 浏览

position - UIViewPropertyAnimator 位置重置

我有一个小问题。我正在尝试像 Instagram 一样创建动画进度条。它在所有情况下都能正常工作,除非我想展示上一个项目。断点说当我切换到上一个项目时, UIViewPropertyAnimator 位置保持在 .end 状态,所以它立即调用它的完成并“返回”到下一个项目。所以我的问题是 - 当动画师完成它的工作时,如何将它的位置重置回 .start 然后切换下一个项目?