Текст исчезает после изменения в анимации - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь создать приложение iOS для викторины, и когда пользователь заканчивает вопрос, оно уходит и заменяется новым вопросом.Однако, когда я заменяю текст новым вопросом, он исчезает (например, анимация завершается и работает отлично, а затем сразу после того, как этот текст исчезает).

 func slideOutThenIn() {
    viewUpperContainer.transform = CGAffineTransform(translationX: 0, y: 0)
    viewLowerContainer.transform = CGAffineTransform(translationX: 0, y: 0)

    UIView.animate(withDuration: 1, delay: 0, options: .curveEaseInOut, animations: {

        self.viewUpperContainer.transform = CGAffineTransform(translationX: -self.view.frame.width, y: 0)
        self.viewLowerContainer.transform = CGAffineTransform(translationX: -self.view.frame.width, y: 0)

    }) { (_) in

        self.viewUpperContainer.frame.origin.x = self.view.frame.width
        self.viewLowerContainer.frame.origin.x = self.view.frame.width

        UIView.animate(withDuration: 1, delay: 0, options: .curveEaseInOut, animations: {

            self.viewUpperContainer.transform = CGAffineTransform(translationX: (-self.view.frame.width * 2), y: 0)
            self.viewLowerContainer.transform = CGAffineTransform(translationX: (-self.view.frame.width * 2), y: 0)

        }, completion: {finished in
            self.questionLabel.text = self.allQuestions.list[self.questionNumber].questionText
        })
    }

}

Я хотел бы изменить текст во время анимации, но сейчасЯ рад, что он изменился сразу после того, как анимация прошла без исчезновения.

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Это ответ, который работал для меня.

func slideOutThenIn() {
    viewUpperContainer.transform = CGAffineTransform(translationX: 0, y: 0)
    viewLowerContainer.transform = CGAffineTransform(translationX: 0, y: 0)

    UIView.animate(withDuration: 0.5, delay: 0, options: .curveEaseInOut, animations: {

        self.viewUpperContainer.transform = CGAffineTransform(translationX: -self.view.frame.width, y: 0)
        self.viewLowerContainer.transform = CGAffineTransform(translationX: -self.view.frame.width, y: 0)

    }) { (_) in

        self.viewUpperContainer.transform = CGAffineTransform(translationX: self.view.frame.width, y: 0)
        self.viewLowerContainer.transform = CGAffineTransform(translationX: self.view.frame.width, y: 0)

        self.questionLabel.text = self.allQuestions.list[self.questionNumber].questionText

        UIView.animate(withDuration: 0.5, delay: 0, options: .curveEaseInOut, animations: {

            self.viewUpperContainer.transform = CGAffineTransform(translationX: 0, y: 0)
            self.viewLowerContainer.transform = CGAffineTransform(translationX: 0, y: 0)

        }, completion: {finished in
        })
    }

}
0 голосов
/ 21 декабря 2018

попробуйте это -

func slideOutThenIn() {

    //initial position 0
    self.viewUpperContainer.frame.origin.x = 0
    self.viewLowerContainer.frame.origin.x = 0

    UIView.animate(withDuration: 1, delay: 0, options: .curveEaseInOut, animations: {

       //move out 1
       self.viewUpperContainer.frame.origin.x = self.view.frame.width
       self.viewLowerContainer.frame.origin.x = self.view.frame.width

    }) { (_) in

        //change text
        self.questionLabel.text = self.allQuestions.list[self.questionNumber].questionText

        UIView.animate(withDuration: 1, delay: 0, options: .curveEaseInOut, animations: {

            //move in -1
            self.viewUpperContainer.frame.origin.x = 0
            self.viewLowerContainer.frame.origin.x = 0

        }, completion: {finished in

           //ready for use 0
        })
    }
}
...