无法使UIButton在ViewDidLoad上淡出



如标题所述,我无法让UIButton在ViewDidLoad方法中淡出。这是我迄今为止的代码:

ViewController.swift

import UIKit
import QuartzCore
class ViewController: UIViewController {
@IBOutlet weak var nextButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
self.nextButton.fadeIn(duration: 10.0, delay: 10.0)
}
}

UIViewExtensions.swift

import Foundation
import UIKit
extension UIView {
func fadeIn(duration: NSTimeInterval = 1.0, delay: NSTimeInterval = 0.0, completion: ((Bool) -> Void) = {(finished: Bool) -> Void in}) {
UIView.animateWithDuration(duration, delay: delay, options: UIViewAnimationOptions.CurveEaseIn, animations: {
self.alpha = 1.0
}, completion: completion)  }
func fadeOut(duration: NSTimeInterval = 1.0, delay: NSTimeInterval = 0.0, completion: (Bool) -> Void = {(finished: Bool) -> Void in}) {
UIView.animateWithDuration(duration, delay: delay, options: UIViewAnimationOptions.CurveEaseIn, animations: {
self.alpha = 0.0
}, completion: completion)
}
}

您不想在viewDidLoad上启动任何类似淡入淡出的动画。当类完成初始化时(在初始化之后)调用此方法。它发生在视图可见之前。您想在视图DidPear中启动动画。一旦视图在屏幕上可见,就会调用此操作。当你在viewDidLoad中启动它时,当它到达viewDidPear时,它已经完成了动画,当然假设你在大约0.5秒内完成了淡入。

在故事板上将alpha按钮设置为0,这样您就可以淡入。

因为,如果你的按钮alpha是1,那么你想动画到1,IOS什么都不做

override func viewDidAppear(animated: Bool) {
self.button.fadeIn(duration: 3, delay: 0)
}

最新更新