【问题标题】:How can I carry out multiple different animations at different times with the same UIButton?如何使用同一个 UIButton 在不同时间执行多个不同的动画?
【发布时间】:2019-08-21 15:47:37
【问题描述】:

我正在创建一个动画序列,当按下一个按钮时,一个对象会淡出。当再次按下同一个按钮时,另一个对象淡出。这种情况一直发生,直到 8 个对象淡出。我已经尝试过使用代码,到目前为止,我已经让代码淡出一个对象,一次淡出两个或更多对象,但还没有像上面描述的那样成功地做到这一点。到目前为止,这是我的代码:

import UIKit

class DrinkWaterViewController: UIViewController {

    @IBOutlet weak var glassOne: UIImageView!
    @IBOutlet weak var glassTwo: UIImageView!
    @IBOutlet weak var glassThree: UIImageView!
    @IBOutlet weak var glassFour: UIImageView!
    @IBOutlet weak var glassFive: UIImageView!
    @IBOutlet weak var glassSix: UIImageView!
    @IBOutlet weak var glassSeven: UIImageView!
    @IBOutlet weak var glassEight: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.glassOne.alpha = 1.0
        self.glassTwo.alpha = 1.0
    }

    @IBAction func drunkOne(_ sender: Any){

        if self.glassOne.alpha == 1.0{

        UIView.animate(withDuration: 1.5, delay: 0.2, animations:
            {self.glassOne.alpha = CGFloat(0.1)}
        )
    }
}

【问题讨论】:

    标签: swift xcode animation uibutton


    【解决方案1】:

    将您的眼镜放入数组glasses 并添加一个属性来跟踪nextToFade。然后只需淡化glasses[nextToFade] 并将nextToFade 增加1:

    class DrinkWaterViewController: UIViewController {
    
        @IBOutlet weak var glassOne: UIImageView!
        @IBOutlet weak var glassTwo: UIImageView!
        @IBOutlet weak var glassThree: UIImageView!
        @IBOutlet weak var glassFour: UIImageView!
        @IBOutlet weak var glassFive: UIImageView!
        @IBOutlet weak var glassSix: UIImageView!
        @IBOutlet weak var glassSeven: UIImageView!
        @IBOutlet weak var glassEight: UIImageView!
    
        // array to hold the glasses so that they can be indexed
        var glasses = [UIImageView]()
    
        // index of next glass to fade
        var nextToFade = 0
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            // put the glasses into the array
            glasses = [glassOne, glassTwo, glassThree, glassFour,
                        glassFive, glassSix, glassSeven, glassEight]
    
            // make sure they're all visible
            glasses.forEach { $0.alpha = 1.0 }
        }
    
        @IBAction func drunkOne(_ sender: Any) {
            // make sure not to index beyond the end of the array
            guard nextToFade < glasses.count else { return }
    
            let glass = glasses[nextToFade]
            nextToFade += 1
            UIView.animate(withDuration: 1.5, delay: 0.2, animations:
                { glass.alpha = 0.1 }
            )
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多