繁体   English   中英

开始第二个UIView动画撤消之前的动画

[英]Starting second UIView animation undoes previous animation

在Swift中,我使用UIView.animateWithDuration来动画按钮和一些文本。 在“完成”块中,我执行一个名为showQuestion的函数,这是另一个UIView动画。 但是,首次运行showQuestion函数时,先前被先前动画隐藏的按钮和文本会再次出现在框架中,就好像从未移动过一样。

我在这里检查了几个问题,但似乎没有一个直接解决这个问题。

编辑#1

这是三个功能。

    func startQuiz(){
        UIView.animateWithDuration(0.2, delay: 0.2, options: .CurveEaseIn, animations: {
                self.goButton.frame.origin.y = self.view.frame.height + 5
                self.languageLabel.frame.origin.y = self.view.frame.height + 5
                self.label.frame.origin.y = self.view.frame.height + 5
            }, completion: { finished in
                self.generateFirstQuestion()
        })
    }

    func generateFirstQuestion() {
        var aBase = 0;
        var qBase = 0;
        if(self.lang == "fr") {
            aBase = 25
            qBase = 5
        }
        var offset = (self.currentQuestion * 5) + aBase
        var question:String = self.questions[self.currentQuestion+qBase]
        self.questionLabel.text = question
        var answer1:String = self.answers[offset]
        var answer2:String = self.answers[offset+1]
        var answer3:String = self.answers[offset+2]
        var answer4:String = self.answers[offset+3]
        var answer5:String = self.answers[offset+4]
        self.showQuestion()
    }

    func showQuestion(){
        if(self.isAnimating){
            UIView.animateWithDuration(0.2, delay: 0.2, options: .CurveEaseOut, animations: {
                self.questionLabel.center.x = self.view.center.x

                }, completion: { finished in
                    self.isAnimating = false
                    self.currentQuestion++
            })
        }
        else {
            var aBase = 0;
            var qBase = 0;
            if(self.lang == "fr") {
                aBase = 25
                qBase = 5
            }
            var offset = (self.currentQuestion * 5) + aBase
            var question:String = self.questions[self.currentQuestion+qBase]
            self.questionLabel.text = question
            var answer1:String = self.answers[offset]
            var answer2:String = self.answers[offset+1]
            var answer3:String = self.answers[offset+2]
            var answer4:String = self.answers[offset+3]
            var answer5:String = self.answers[offset+4]

            UIView.animateWithDuration(0.2, delay: 0.2, options: .CurveEaseIn, animations: {
                self.questionLabel.frame.origin.x = 0-700

                }, completion: { finished in
                    self.questionLabel.frame.origin.x = self.view.frame.width+5
                    self.isAnimating = true
                    self.showQuestion()
            })
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM