- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个运行完美的简单脉冲动画
UIView.animate(withDuration: 1, animations: {
myAnimatableView.transform = CGAffineTransform(scaleX: 1.2, y: 1.2)
}) { _ in
UIView.animate(withDuration: 1, animations: {
myAnimatableView.transform = .identity
})
}
我想制作相同的动画,但现在使用 UIViewPropertyAnimator
。是否可以使用新 API 优雅地复制这种脉冲效果?
我是这样做的
let animator = UIViewPropertyAnimator(duration: 1, curve: .linear) {
animatableView.transform = CGAffineTransform(scaleX: 1.2, y: 1.2)
}
animator.addCompletion { _ in
animator.isReversed = true
animator.startAnimation()
}
animator.startAnimation()
但我的 animatableView
只是缩放到 1.2。
最佳答案
属性动画师似乎在完成后删除了动画(这将解释再次启动它不会有任何效果)- 参见 SO question .基于此,您可以尝试通过 pausesOnCompletion
对其进行破解,但我认为这并不像您想象的那么容易。仅仅因为 documentation说:
When the value of this property is true, the animator remains in the active state when the animation finishes, and it does not execute its completion handler.
这意味着如果 pauseOnCompletion
设置为 true,则不会调用完成处理程序。根据同一文档,您可以通过观察动画制作器的 isRunning
属性来确定动画制作器何时结束(以及何时应该重新启动动画)。然而,当我尝试实现它时,我发现 isRunning
上的 KVO 在动画师的生命周期中没有被调用。因此我最后的建议是简单地使用两个动画师,因为它看起来更容易实现:
let animator = UIViewPropertyAnimator(duration: 1, curve: .linear) {
animatableView.transform = CGAffineTransform(scaleX: 1.2, y: 1.2)
}
animator.addCompletion { _ in
let secondAnimator = UIViewPropertyAnimator(duration: 1, curve: .linear) {
animatableView.transform = CGAffineTransform.identity
}
secondAnimator.startAnimation()
}
animator.startAnimation()
关于ios - UIViewPropertyAnimator 反向动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47496584/
我在 Factory 类中有此代码以返回 UIViewPropertyAnimators 以在何时何地使用: class AnimatorFactory { @discardableResul
当用户点击 UIView 时,我尝试为 UIView 和 imageView 制作动画。这是我的代码: // When the user taps on the featured story imag
我查看了以下 StackOverflow 问题的答案,但似乎没有一个对我有用:在执行完成 block 时,程序没有再次执行动画,而是无限地喷出“完成”广告动画 View 。 How can I rep
帮我弄清楚在这种情况下发生了什么: 假设您有一个具有以下属性的 View Controller @IBOutlet weak var blurView: UIVisualEffectView! var
我有一个带有摄像头的 ViewController,用于录制视频。顶部有一个旋转的圆圈,表示正在录制视频。这是这样设置的: class CameraViewController: UIViewCont
大家好! 我的应用程序有问题。我正在使用 UIViewPropertyAnimator 为我的模糊设置动画。我让模糊效果从 nil (0) 运行到 .light (1),但是因为光效太多了,我将 UI
我弄乱了 UIViewPropertyAnimator 的文档我希望找到一种方法来组合两个 UIViewPropertyAnimator。 像这样: let firstAnimator = UIVie
我有一个运行完美的简单脉冲动画 UIView.animate(withDuration: 1, animations: { myAnimatableView.transform = CGAff
UIViewPropertyAnimator 对于修改 View 的变换、alpha 等非常方便。但是,有时您希望为 CAShapeLayer 路径或 设置动画UIImageView 图像变化。有什么
当 UIViewPropertyAnimator 执行动画过程时如何增加值?当我将对象设置为运动时,我想在它落在屏幕上时增加它的值,但我不确定如何将其与我的动画器链接。有什么建议么?这是我启动的方式
来自苹果文档 pausesoncompletion Because the completion handler is not called when this property is true, y
我正在寻找一种方法来将一些动画添加到 UIViewPropertyAnimator 中,它比其他动画更早完成。UIViewPropertyAnimator 例如有一个方法,您可以在其中添加延迟动画 a
我正在尝试通过屏幕触摸来控制动画 当我触摸屏幕然后 View 的 alpha 变为 0 但是如果在 alpha 变为 0 时再次触摸 然后 alpha 再次变为 1(中断动画使 alpha 值为 0)
我正在使用 UIViewPropertyAnimator 来运行数组交互式动画,我遇到的一个问题是,每当我反转动画时,我都无法再次向前运行动画。 我使用三个函数与平移手势识别器一起处理动画。 priv
使用 UIView.animate: 方法,我们可以配置选项并使其成为 [.autoreverse,.repeat]。 这是一个简单的动画: @IBOutlet weak var v1: UIView
我正在尝试让我的动画让屏幕从黑变白再变黑,并重复一定次数。目前使用我的代码,动画从黑色缓和到白色,然后跳回黑色。无论如何要反向运行动画或添加在第一个动画完成后运行的动画? override func
我没有经常使用 UIViewPropertyAnimator(仍然是一个老式的 block 家伙),我看到了一些我无法解释的行为,而且文档并没有真正提供任何见解上。 为什么即使动画师在启动后立即暂停,
我有一个 UIImageView,它可以拉伸(stretch)屏幕的宽度,我正在为其尾端和前端设置动画以在屏幕中间相遇。它所花费的时间与计时器有关。 我有一个开始按钮,它也可以用作暂停按钮。我可以让动
问题描述 我有一个 UIViewPropertyAnimator 管理模糊等,我只想将它用于它的 fractionComplete 属性。问题是,如果我将 fractionComplete 设置为 1
问题描述 我有一个 UIViewPropertyAnimator 管理模糊等,我只想将它用于它的 fractionComplete 属性。问题是,如果我将 fractionComplete 设置为 1
我是一名优秀的程序员,十分优秀!