【问题标题】:How to add fade-in animation in Swift如何在 Swift 中添加淡入动画
【发布时间】:2020-01-02 15:11:38
【问题描述】:

我想为UILabel 添加淡入动画。我通过在 UIView 中为淡入和淡出动画添加扩展来进行尝试。淡出动画效果很好,但我遇到了淡入动画的问题。

这是我的代码,

extension UIView{

func fadeIn() {
    UIView.animate(withDuration: 1.0, delay: 0.0, options: UIView.AnimationOptions.curveEaseIn, animations: {
        self.alpha = 1.0
    }, completion: nil)

}

func fadeOut() {
      UIView.animate(withDuration: 8.0, delay: 0.0, options: UIView.AnimationOptions.curveEaseOut, animations: {
                    self.alpha = 0.0
                    }, completion: nil)
            }
        }

 class myScene: UIViewController {

 let label = UILabel(frame: CGRect(x: 0, y: 0, width: 400, height: 400))

 override func viewDidLoad(){

 super.viewDidLoad()

    self.label.center = CGPoint(x: self.view.frame.width / 2, y: self.view.frame.height / 2 )
    self.label.font = UIFont.systemFont(ofSize: 100)
    self.label.textAlignment = .center
    self.label.text = "Hello"

  //self.view.addSubview(label) (tried adding this after and before the fadein() statement)

    label.fadeIn()
 }
}

我相信我犯了一个愚蠢的错误,但不知何故无法弄清楚是什么。请帮我弄清楚。

【问题讨论】:

    标签: ios swift animation uikit


    【解决方案1】:

    您是否在界面构建器中将标签 alpha 设置为 0?

    您在 viewDidLoad() 中调用 label.fadeIn(),但如果 alpha 已经为 1,那么什么都不会发生

    编辑---------

    你不能这样称呼它

    override func viewDidLoad(){ 
        super.viewDidLoad()
        self.label.alpha = 0 
        self.label.fadeIn()
    }
    

    这行不通。

    你需要做的是调用淡入视图会像这样显示。

    override func viewDidLoad(){
        super.viewDidLoad()
        self.label.alpha = 0
    }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.label.fadeIn()
    }
    

    编辑 ---------

    因为您使用的是游乐场。我建议不要使用它,其功能与常规项目并不相同。您通常可以在界面构建器上应用 ALPHA .. 但不能在游乐场中应用。 因此,无论如何,您的标签将始终具有 alpha 1。

    您将无法使用 Playground 实现您想要的。意思是,在加载时标签会淡入。您可以在按钮或操作单击上执行此操作吗?

    你也可以在 viewDidAppear 上试试这个

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        self.label.fadeIn()
    }
    

    【讨论】:

    • 感谢您的回复。我目前在 Swift Playgrounds 工作。我尝试在 viewDidLoad() 之前将 alpha 设置为零 self.label.alpha = 0.0 label.fadeIn() 但没有任何改变。
    • @AtharvSalokhe 这行不通。检查我的更新答案。
    • @AtharvSalokhe 在 vi​​ewWillAppear 中出错,忘记添加动画
    • @AtharvSalokhe 因为您使用的是 Playgrounds。在我看来,永远不要使用游乐场。操场的行为与常规项目不同。检查更新的答案。
    猜你喜欢
    • 1970-01-01
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    相关资源
    最近更新 更多