[英]Cannot drive UIView.transition with the UIViewPropertyAnimator.fractionComplete
我正在尝试使用滑块驱动具有 2 个图像值(在本例中)的 UIImageView 的转换,但是在UIViewPropertyAnimator
(应该可以工作)中使用UIView.transition
却没有。 我错过了什么吗?
let animator = UIViewPropertyAnimator(duration: 3.0, curve: .linear)
let crossDissolve = {
self.imageView.image = UIImage(named: "deadpool.jpg")
UIView.transition(
with: self.imageView,
duration: 4.0,
options: .transitionCrossDissolve,
animations: {},
completion: nil
)
}
animator.addAnimations(crossDissolve)
这是一个带有问题示例的操场,只需将滑块从一侧拖到另一侧,图像就会柔和地交叉溶解
就像是:
游乐场: https : //www.dropbox.com/s/ix8nfxg43ij68q3/UIViewPropertyAnimator.playground.zip? dl =0
在你没有在动画闭包中定义任何动画的代码中,我对这个 API 不是很熟悉,但我假设你会想要这样的东西。(我没有测试过这段代码)
let animator = UIViewPropertyAnimator(duration: 3.0, curve: .linear)
let crossDissolve = {
UIView.transition(
with: self.imageView,
duration: 4.0,
options: .transitionCrossDissolve,
animations: {
self.imageView.image = UIImage(named: "deadpool.jpg")
},
completion: nil
)
}
animator.addAnimations(crossDissolve)
然后,您可以使用在滑块.valueChanged
事件上调用的函数来处理动画进度
slider.addTarget(self, action: #selector(sliderValueChanged(_:)), for: .valueChanged)
func sliderValueChanged(sender: UISlider) {
myAnimation.fractionComplete = CGFloat(sender.value)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.