Ios 在计时器中运行UIView.animate
我做了一个应用程序,从数字10开始每秒钟倒计时一次。倒计时已设置动画。代码如下:Ios 在计时器中运行UIView.animate,ios,animation,uiview,timer,Ios,Animation,Uiview,Timer,我做了一个应用程序,从数字10开始每秒钟倒计时一次。倒计时已设置动画。代码如下: import UIKit class ViewController: UIViewController { var startNumber = 10 lazy var numberLabel: UILabel = { let label = UILabel() label.translatesAutoresizingMaskIntoConstraints = f
import UIKit
class ViewController: UIViewController {
var startNumber = 10
lazy var numberLabel: UILabel = {
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.font = label.font.withSize(160)
label.textColor = .lightGray
return label
}()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
view.addSubview(numberLabel)
NSLayoutConstraint.activate([
numberLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor),
numberLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor)
])
_ = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { (time) in
self.numberLabel.text = String(self.startNumber)
self.startNumber -= 1
UIView.animate(withDuration: 0.99, animations: {
self.numberLabel.alpha = 0
}, completion: { (true) in
self.numberLabel.alpha = 1
})
}
}
}
如果UIView和计时器间隔相等,则倒计时将显示不均匀的数字动画。这就是为什么在代码中将UIView间隔设置为0.99而不是1,以显示每个数字的动画倒计时。动画仍然不平滑,因为可以在毫秒内看到数字“flick”,但我认为这是因为间隔设置为0.99而不是1
我的问题是:
1) 为什么在UIView和Timer上设置相等的间隔会导致奇数倒计时动画
2) 倒计时是每秒钟还是0.99秒倒计时 将代码更改为那样
_ = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { (time) in
self.startNumber -= 1
self.numberLabel.alpha = 1
UIView.setAnimationCurve(UIViewAnimationCurve.easeInOut)
UIView.animate(withDuration: 1, animations: {
self.numberLabel.text = String(self.startNumber)
self.numberLabel.alpha = 0
}, completion: { (true) in
})
}
将代码更改为那样
_ = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { (time) in
self.startNumber -= 1
self.numberLabel.alpha = 1
UIView.setAnimationCurve(UIViewAnimationCurve.easeInOut)
UIView.animate(withDuration: 1, animations: {
self.numberLabel.text = String(self.startNumber)
self.numberLabel.alpha = 0
}, completion: { (true) in
})
}
1) 为什么在UIView和Timer上设置相等的间隔会导致奇数倒计时动画
答:设置“相等时间”时,上一个动画肯定会与新动画重叠。所以最好少花点时间。甚至低于0.99
2) 倒计时是每秒钟还是0.99秒倒计时
答:无论动画定时器如何,每秒都会触发倒计时(1)为什么在UIView和定时器上设置相等的间隔会导致奇数倒计时动画
答:设置“相等时间”时,上一个动画肯定会与新动画重叠。所以最好少花点时间。甚至低于0.99
2) 倒计时是每秒钟还是0.99秒倒计时
Ans:无论动画计时器如何,每秒都会触发倒计时