无法让 UIButton 在 ViewDidLoad 上淡入
Posted
技术标签:
【中文标题】无法让 UIButton 在 ViewDidLoad 上淡入【英文标题】:Unable to Get UIButton to Fade In on ViewDidLoad 【发布时间】:2015-04-23 01:48:38 【问题描述】:如标题所述,我无法让 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)
【问题讨论】:
您调用了淡入,但您确定您之前将 alpha 设置为 0。如果只是初始化视图,则无法从 1 动画到 1。 【参考方案1】:您不想在 viewDidLoad 上启动任何动画,例如淡入。当类完成初始化时(就在初始化之后)调用此方法。它发生在视图可见之前。您想在 viewDidAppear 中启动动画。一旦视图在屏幕上可见,就会调用它。当您在 viewDidLoad 中启动它时,它在到达 viewDidAppear 时已经完成了动画,当然假设您在大约 0.5 秒内完成了淡入淡出。
【讨论】:
好的,谢谢!我将它添加到 ViewDidAppear 中,但是 UIButton 淡入的动画仍然只是简单地出现。 是的,这是将其移动到 viewDidAppear 并将 alpha 设置为在动画块之前从 0 开始的组合。然后在动画块内的持续时间内将 alpha 提高到 1。【参考方案2】:将故事板上的按钮 alpha 设置为 0,以便您可以淡入。
因为,如果你的按钮 alpha 为 1,那么你想动画到 1,ios 什么都不做
override func viewDidAppear(animated: Bool)
self.button.fadeIn(duration: 3, delay: 0)
【讨论】:
啊,我不知道我怎么会忘记这个!无论如何,将它的 alpha 设置为 0 后,它仍然不会淡入 - 它仍然是不可见的。 在你的函数中,你必须等待 10 秒。设置为0,放入viewDidAppear,查看更新。我觉得更好,因为你的动画持续时间太长了以上是关于无法让 UIButton 在 ViewDidLoad 上淡入的主要内容,如果未能解决你的问题,请参考以下文章