如标题所述,我无法让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)
}