Странная анимация 'лаг' после исчезновения экрана запуска и перед запуском метода viewDidAppear () - PullRequest
0 голосов
/ 17 сентября 2018

После того, как экран запуска исчезнет, ​​логотип и название моего приложения (они находятся в контейнере) должны приблизиться к верхней части экрана.Между закрытием экрана запуска и методом viewDidAppear происходит странное «мерцание» моего контейнера на заднем плане.Как вы видите, я использую snapkit, но это не должно иметь ничего общего с проблемой.Вот мой код:

class WelcomeScreenViewController: UIViewController {

var welcomeScreenView: WelcomeScreenView {
    return view as! WelcomeScreenView
}

override func loadView() {
    let contentView = WelcomeScreenView(frame: .zero)
    view = contentView

}

override func viewDidLoad() {
    super.viewDidLoad()
    self.welcomeScreenView.checkWeatherButton.transform = CGAffineTransform(translationX: 0, y: 200)
    self.welcomeScreenView.checkWeatherButton.addTarget(self, action: #selector(showCityChoiceVC), for: .touchUpInside)
    navigationController?.isNavigationBarHidden = true
}

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    self.welcomeScreenView.appNameLogoContainerVerticalConstraint?.isActive = false
    self.welcomeScreenView.appNameLogoContainer.snp.makeConstraints({ (make) in
        make.top.equalTo(self.welcomeScreenView).offset(100)
    })

    UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 0.5, options: [], animations: {
        self.welcomeScreenView.layoutIfNeeded()
        self.welcomeScreenView.checkWeatherButton.transform = CGAffineTransform(translationX: 0, y: 0)
    }, completion: nil)

}

@objc private func showCityChoiceVC() {
    self.navigationController?.pushViewController(RegisterViewController(), animated: true)
}

1 Ответ

0 голосов
/ 17 сентября 2018

Мигание происходит из-за ограничений в viewDidAppear.Вместо этого используйте viewWillAppear или viewDidLoad.viewDidAppear вызывается, когда ваше представление фактически появляется на экране.Поэтому любые изменения будут видны пользователю.

...