Изменить ViewController после анимации - PullRequest
0 голосов
/ 12 декабря 2018

Я создал эту анимацию для первого экрана приложения (я не использую Launchscreen), но когда анимация заканчивается, я не знаю, как перейти к следующему контроллеру представления.Я устал от Segue, но ничего: /

import UIKit
class ViewController: UIViewController {
    @IBOutlet weak var logoLSMini: UIImageView!
    @IBOutlet weak var logoLSMini2: UIImageView!
    @IBOutlet weak var logoLS: UIImageView!

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.logoLSMini.alpha = 0.0
        self.logoLSMini2.alpha = 0.0
        self.logoLS.alpha = 0.0
        self.logoLS.frame.origin.y = +100


    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        UIView.animate(withDuration: 5, delay: 0.0, options: .curveEaseOut , animations: {
            //FIRST EFFECT

            self.logoLSMini.alpha = 1.0
            self.logoLSMini.transform = CGAffineTransform(rotationAngle: 360)
            self.logoLSMini.transform = CGAffineTransform(scaleX: 100, y: 100)
            self.logoLS.alpha = 1.0

        }, completion: nil)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

Ответы [ 2 ]

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

Вам просто нужно выполнить переход в completion из UIView.animate.Просто убедитесь, что вы заменили любой идентификатор, который вы добавили в свой переход в раскадровке, на yourSegue.

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    UIView.animate(withDuration: 5, delay: 0.0, options: .curveEaseOut , animations: {
        //FIRST EFFECT
        self.logoLSMini.alpha = 1.0
        self.logoLSMini.transform = CGAffineTransform(rotationAngle: 360)
        self.logoLSMini.transform = CGAffineTransform(scaleX: 100, y: 100)
        self.logoLS.alpha = 1.0
    }, completion: { _ in
        self.performSegue(withIdentifier: "yourSegue", sender: nil)
    })
}
0 голосов
/ 12 декабря 2018

Попробуйте поместить код движущегося viewController в completionHandler

UIView.animate(withDuration: 5, delay: 0.0, options: .curveEaseOut, animations: {
    .....
}, completion: { (finished) in
    if finished {

        //Move to your next controller
        DispatchQueue.main.async {
            //Your code
        }
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...