为什么我的代码中的动画 UI 标签是从视图中开始的?

Why are the animated UI Labels in my code starting from within the view?

我是一个非常新的代码学习者。我一直在上一些在线课程,最近遇到了这个项目。

我基本上复制了我在屏幕上看到的代码,因为项目文件无法下载。 动画应该从视图外部带来 UILabels 并将它们定位在视图内。 然而,似乎发生了什么,标签开始 视图屏幕内并向外和向外动画。

我已经复制了下面的项目。非常感谢任何帮助。

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var helloWorld: UILabel!
    @IBOutlet weak var secondLabel: UILabel!
    @IBOutlet weak var hiddenLabel: UILabel!


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)

        helloWorld.center.y -= view.bounds.height

        secondLabel.center.y += view.bounds.height

        hiddenLabel.alpha = 0.0

    }

    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)

//  Animate Hello World label
        UIView.animateWithDuration(1.5, animations: {

            self.helloWorld.center.y += self.view.bounds.height


            }, completion: { finished in
                self.secondAnimation()
        })

//  Animate background color change

        UIView.animateWithDuration(2.0, delay: 1.5, options: [], animations: {

            self.view.backgroundColor = UIColor.yellowColor()
        }, completion:nil)

    }

//  Animate second Label

    func secondAnimation() {

        UIView.animateWithDuration(1.5, delay: 0.0, options: [], animations: { () -> Void in

            self.secondLabel.center.y -= self.view.bounds.height

        }, completion:nil)

    }


    func backgroundColor() {

        UIView.animateWithDuration(2.5, animations: {
            self.view.backgroundColor = UIColor.blackColor()
        }, completion: nil)

        UIView.animateWithDuration(1.0, delay: 1.5, options: [], animations: {
            self.hiddenLabel.alpha = 1.0
        }, completion:nil)

    }

}

在减去 view.bounds.height 之前,我会检查 viewWillAppear 中的 hello world.center.y 值。如果 center.y 值很大且为正,则减法可能会将 center.y 值设置在视图内部。如果是这种情况,那么您可能希望将 viewWillAppear 中的减法更改为加法,然后将 viewDidAppear 动画中的加法更改为减法。