gpt4 book ai didi

ios - 使用 UIViewPropertyAnimator 暂停和恢复约束动画

转载 作者:可可西里 更新时间:2023-11-01 00:57:38 36 4
gpt4 key购买 nike

我有一个 UIImageView,它可以拉伸(stretch)屏幕的宽度,我正在为其尾端和前端设置动画以在屏幕中间相遇。它所花费的时间与计时器有关。

我有一个开始按钮,它也可以用作暂停按钮。我可以让动画开始并毫无问题地暂停,但让它从停止的地方(甚至根本没有)再次恢复是我遇到问题的地方。

@IBAction func startBtnPressed(_ sender: AnyObject) {
if isStartBtnPressed == true {
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(decreaseTime), userInfo: nil, repeats: true)
isStartBtnPressed = false
self.prepareTimeTrailing.constant = screenSize / 2
self.prepareTimeLeading.constant = screenSize / 2
animator = UIViewPropertyAnimator(duration: TimeInterval(timeSec), curve: .linear) {
self.view.layoutIfNeeded()
}
animator.startAnimation()
} else {
timer.invalidate()
isStartBtnPressed = true
animator.pauseAnimation()
}
}

我尝试添加下面的代码,但没有任何效果。

var animationTiming = UICubicTimingParameters.init(animationCurve: .linear)

animator.continueAnimation(withTimingParameters: animationTiming, durationFactor: 1.0)
UIView.animate(withDuration: TimeInterval(Float(timeSec)), delay: 0.0, options: [.curveLinear, .allowUserInteraction, .beginFromCurrentState], animations: {
self.view.layoutIfNeeded()
}, completion: nil)

希望有人能阐明我需要做什么才能让它发挥作用。

提前致谢。

最佳答案

我认为问题在于您在尝试恢复动画时创建了新动画。您需要在不创建新动画类的情况下执行 startAnimation()。我认为您需要像这样思考:

@IBAction func startBtnPressed(_ sender: AnyObject) {
if animator == nil{
self.prepareTimeTrailing.constant = screenSize / 2
self.prepareTimeLeading.constant = screenSize / 2
animator = UIViewPropertyAnimator(duration: TimeInterval(timeSec), curve: .linear) {
self.view.layoutIfNeeded()
}
if isStartBtnPressed == true {
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(decreaseTime), userInfo: nil, repeats: true)
isStartBtnPressed = false

animator.startAnimation()
} else {
timer.invalidate()
isStartBtnPressed = true
animator.pauseAnimation()
}
}

关于ios - 使用 UIViewPropertyAnimator 暂停和恢复约束动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41962063/

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