gpt4 book ai didi

ios - 无法使用 UIViewPropertyAnimator.fractionComplete 驱动 UIView.transition

转载 作者:可可西里 更新时间:2023-11-01 01:56:54 27 4
gpt4 key购买 nike

我正在尝试使用 slider 驱动具有 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)

这是一个带有问题示例的 Playground ,只需将 slider 从一侧拖动到另一侧,图像就会柔和地交叉溶解

类似于:

img

Playground :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)

然后您可以使用在 slider .valueChanged 事件上调用的函数来处理动画进度

slider.addTarget(self, action: #selector(sliderValueChanged(_:)), for: .valueChanged) 

func sliderValueChanged(sender: UISlider) {
myAnimation.fractionComplete = CGFloat(sender.value)
}

关于ios - 无法使用 UIViewPropertyAnimator.fractionComplete 驱动 UIView.transition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51965147/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com