页面打开时给 UILabel 添加动画

Add animation to UILabel when the page is opened

我阅读并观看了很多关于向标签添加动画的教程,但其中 none 对我有用。 我希望当我打开一个视图控制器时,一秒钟后,一个 UILabel 开始从页面底部淡入并到达页面中心。 比如这里是我说的标签outlet

  @IBOutlet weak var welcomeLabel: UILablel!

我制作了这个功能并将其添加到 viewdidload 但它没有显示任何动画,而且当我点击它时会崩溃并出现此错误:

Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value

函数如下:

func addAnimation() {
    UILabel.animate(withDuration: 3, delay: 3, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: {
        self.welcomeLabel.transform = CGAffineTransform(translationX: 0, y: -200)
    })
}

我也知道这不是我看的动画,我只是为了测试添加的。你能帮我写出我想要的动画吗:

开始淡入并从页面底部移动到中心。

非常感谢

首先,您的标签现在未连接到视图控制器。因此,您收到了该错误。

之后,将标签放置在屏幕中心并创建它的 centerY 出口。现在您可以通过更改此 centerY 常量来为其设置动画,并通过更改 alpha 值来淡化它。

例如:

UIView.animate(withDuration: 0.3)  {
   self.centerY.constant = //your value
   self.label. alpha = 1
   self.view.layoutIfNeeded()
}

创建UILabel@IBOutlet并将标签放在屏幕中央并添加所需的constraint

创建 @IBOutlet of label center Y alignment of Constraint 如下所示。

    @IBOutlet weak var centerY: NSLayoutConstraint!

然后改变它的常量值。

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        centerY.constant =  self.view.bounds.height/2
        self.view.layoutIfNeeded()
        addAnimation()
    }

    func addAnimation(){
        UIView.animate(withDuration: 1, delay: 0, options: [.curveEaseOut], animations: {
            self.centerY.constant = 0
            self.welcomeLabel.alpha = 1.0
            self.view.layoutIfNeeded()
        }, completion: nil)

    }