2016-11-04 11 views
0

私は、最初の起動時に黒い画面上でスプラッシュアニメーションを実行してから、最初のView Controllerに移行しようとしています。そうするために、私はlaunchscreen.storyboardビューコントローラーを黒に設定し、didFinishLaunchingWithOptionsにアニメーションを作成し、appDelegateのサブビュー(以下に示す)として実行しました。現在、アプリは黒い画面で起動し、アニメーションはフェードイン、スリープ、およびフェードアウトしますが、最初のビューコントローラーが空白の背景に設定されていても黒い画面にとどまります。私は、サブビューを削除するか、rootViewControllerを使って強制的に再試行するなど、次のビューコントローラにアプリを送るための複数の補完ブロックを試しましたが、そのような運がありません。私は必要とするコードのほんの一ラインだとはっきりと確信していますが、わかりません。スプラッシュアニメーションの終了後にView Controllerを変更します。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

    self.window = UIWindow(frame: UIScreen.main.bounds) 
    let imageView = UIImageView(frame: self.window!.frame) 
    imageView.loadGif(name: "splashanimation") 
    imageView.alpha = 0.0 
    self.window!.addSubview(imageView) 
    let emptyView = UIViewController() 
    self.window?.rootViewController = emptyView 
    self.window!.makeKeyAndVisible() 
    UIView.animate(withDuration: 1.0, animations: {imageView.alpha = 1}, completion: { (value: Bool) in UIView.animate(withDuration: 1.0, animations: {sleep(UInt32(1.5))}, completion: { (value: Bool) in UIView.animate(withDuration: 2.0, animations: {imageView.alpha = 0}, completion: { 

      ** SOMEHOW OPEN THE FIRST VIEW CONTROLLER ** 


      })})}) 
    UIApplication.shared.isStatusBarHidden = true 
    return true 
} 

答えて

1
let storyboard = UIStoryboard(name: "Main", bundle: nil) 

let initialViewController = storyboard.instantiateViewControllerWithIdentifier("HomeView") as UIViewController 

self.window?.rootViewController = initialViewController 
self.window?.makeKeyAndVisible() 

これは単にVCは初期であることをどの設定、あなたはlaunchscreenで行ったように、その後のストーリーボードのインスタンスを設定します。

+0

ありがとう、これは完璧に動作します! – dulongj