无法使用 UIViewPropertyAnimator.fractionComplete 驱动 UIView.transition
Posted
技术标签:
【中文标题】无法使用 UIViewPropertyAnimator.fractionComplete 驱动 UIView.transition【英文标题】:Cannot drive UIView.transition with the UIViewPropertyAnimator.fractionComplete 【发布时间】:2018-08-22 10:47:05 【问题描述】:我正在尝试使用滑块驱动具有 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
【问题讨论】:
【参考方案1】:在提供的代码中,您没有在动画闭包中定义任何动画,我对这个 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)
【讨论】:
谢谢,完整的代码在操场上,然后我添加你建议的调用以上是关于无法使用 UIViewPropertyAnimator.fractionComplete 驱动 UIView.transition的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 StorageClass 配置卷 - 无法获取存储帐户的存储密钥
Worklight Studio 和本地开发,有时无法使用 Java 类,有时无法使用 HTML 文件
Ubuntu 80端口无法使用-非root用户无法使用1024以下端口