【问题标题】:Change view controller after splash animation finishes飞溅动画完成后更改视图控制器
【发布时间】:2017-03-18 19:23:17
【问题描述】:

我试图在应用首次启动时在黑屏上运行启动动画,然后过渡到初始视图控制器。为此,我将 launchscreen.storyboard 视图控制器设置为黑色,然后在 didFinishLaunchingWithOptions 中创建动画并将其作为 appDelegate 中的子视图(如下所示)运行。目前,应用程序在黑屏上启动,动画淡入、休眠和淡出正确,但即使初始视图控制器设置为空白白色背景,也会保持在黑屏上。我尝试了多个完成块来将应用程序发送到下一个视图控制器,例如删除子视图或尝试再次使用 rootViewController 强制它,但没有这样的运气。我很确定这只是我需要的一行代码,但我似乎无法弄清楚。

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
}

【问题讨论】:

    标签: ios iphone swift uiviewcontroller splash-screen


    【解决方案1】:
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    
    let initialViewController = storyboard.instantiateViewControllerWithIdentifier("HomeView") as UIViewController
    
    self.window?.rootViewController = initialViewController
    self.window?.makeKeyAndVisible()
    

    这会设置故事板的一个实例,然后就像您对 launchscreen 所做的那样,只需将哪个 VC 设置为初始值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多