Swift 类似子弹发射的动画

16 篇文章 0 订阅
let msgList = [["item": "连续上班5天","score": 2],["item": "本次排名1名","score": 5],["item": "平均上班时长度10小时","score": 3]]
    
    var msgLabels = [UILabel]()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        if let msgs = self.msgList as? [[String: Any]] {
            for (idx, itemObjc) in msgs.enumerated() {
                let label = UILabel(frame: CGRect(x: 0, y: 300, width: Int(view.bounds.width), height: 25))
                label.textAlignment = .center
                label.font = UIFont.systemFont(ofSize: 15)
                label.textColor = .white
                label.tag = idx
                label.text = "\(itemObjc["item"] ?? "")" + "  +\(itemObjc["score"] ?? "")"
                view.addSubview(label)
                label.isHidden = true
                msgLabels.append(label)
            }
        }
        
        let button = UIButton(type: .custom)
        button.frame = CGRect(x: 80, y: 100, width: 200, height: 50)
        button.backgroundColor = UIColor.blue
        button.setTitle("开始动画", for: .normal)
        button.setTitleColor(UIColor.white, for: .normal)
        button.addTarget(self, action: #selector(clickAction), for: .touchUpInside)
        view.addSubview(button)
        button.layer.cornerRadius = 25
        
        // Do any additional setup after loading the view.
    }

    @objc func clickAction(sender: UIButton) {
        for (indx,label) in self.msgLabels.enumerated() {
            label.alpha = 0
            UIView.animate(withDuration: 0.6, delay: Double(indx)*0.6, options: .transitionFlipFromTop) {
                label.isHidden = false
                label.frame = CGRect(x: 0, y: 240, width: self.view.bounds.width, height: 25)
                label.alpha = 1
            } completion: { (_) in
                label.frame = CGRect(x: 0, y: 300, width: Int(self.view.bounds.width), height: 25)
                label.isHidden = true
            }
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值