Swift - показывать revealingSplashView при запуске приложения независимо от того, какой ViewController - PullRequest
2 голосов
/ 24 января 2020

В моем приложении я использую revealingSplashView .

. Пользователь может войти в систему, поэтому начальный ViewController изменяется:

    class MainNavigationControllerViewController: UINavigationController {

    override func viewDidLoad() {
        super.viewDidLoad()

        if isLoggedIn() {
            let homeController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "HomeVC")
            viewControllers = [homeController]
        }
    }

    fileprivate func isLoggedIn() -> Bool {
        return UserDefaults.standard.isLoggedIn()
    }
}

или пользователь не вошел в систему, поэтому отображается FirstLaunchViewController, откуда пользователь может войти в систему и перейти к MainViewController.

В настоящее время я представляю revealingSplashView в FirstLaunchViewController следующим образом:

let revealingSplashView = RevealingSplashView(iconImage: UIImage(named: "zauberstab")!, iconInitialSize: CGSize(width: 120, height: 120), backgroundColor: .white)

revealingSplashView.startAnimation()

Проблема в том, что я также хочу, чтобы эта анимация была выполнена, если пользователь вошел в систему так MainViewController - начальный V C. Я знаю, что мог бы просто скопировать код из FirstLaunchViewController в MainViewController, но это вызвало проблему, когда пользователь входит в систему и получает MainViewController, когда отображается анимация, хотя она должна отображаться только после запуска приложения.

1 Ответ

0 голосов
/ 25 января 2020

like @ chirag90 предположил, что решением было переместить код в AppDelegate в didFinishLaunchingWithOptions следующим образом:

var window: UIWindow?

let revealingSplashView = RevealingSplashView(iconImage: UIImage(named: "zauberstab")!, iconInitialSize: CGSize(width: 120, height: 120), backgroundColor: .white)

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    revealingSplashView.startAnimation()
    window?.rootViewController?.view.addSubview(revealingSplashView)

    return true
}

Еще одна проблема, которая возникла, заключалась в том, как добавить reavelingSplashView как Subview на который ответил @matt в этом вопросе:

добавление Subview в AppDelegate

...