为什么我的代码中的动画 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 动画中的加法更改为减法。
我是一个非常新的代码学习者。我一直在上一些在线课程,最近遇到了这个项目。
我基本上复制了我在屏幕上看到的代码,因为项目文件无法下载。 动画应该从视图外部带来 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 动画中的加法更改为减法。