在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()
})
}
}