ios - 在定时器中运行 UIView.animate

标签 ios animation uiview timer

我制作了一个从数字 10 开始每秒倒计时的应用程序。倒计时是动画。这是代码:

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 和 Timer 间隔相等,则倒计时会显示不均匀的数字动画。这就是为什么在代码中将 UIView 间隔设置为 0.99 而不是 1 以显示每个数字的动画倒计时。动画仍然不流畅,因为您可以看到数字在一毫秒内“闪烁”,但我认为这是因为间隔已设置为 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

        })

    }

关于ios - 在定时器中运行 UIView.animate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47751928/

相关文章:

objective-c - 当 UIVIew 隐藏在 SameView 中时如何对 UIview 进行动画处理

html - input[type=password] IOS 不渲染键盘(Safari+Chrome)

javascript - 强制性虚拟 slider - 动态使用 jQuery

css - 使用 CSS3 动画/过渡滑动文本

ios - 无法隐藏自定义 subview

objective-c - 带提示的导航栏-替换为图片

ios - 从 TableView 到标签的数组数据

java - 可以更新其他对象值的动画类

iOS 应用程序 - iOS 11.4 随机崩溃

ios - 为什么在尝试垂直对齐我的 UILabel 时 sizeToFit 不起作用?它只是停留在中心