无法让 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 上淡入的主要内容,如果未能解决你的问题,请参考以下文章

无法让自动换行在 UIButton 上工作

无法让 UIButton 在 Swift 4 中调用代码块

无法在 UIButton 故事板上添加操作

如何通过让子视图 UIButton 获取新闻事件?

无法隐藏以编程方式创建的 UIButton

为具有图像的 UIButton 设置标题