iOS 应用程序的自定义启动屏幕

问题描述 投票:0回答:3

经过一番谷歌搜索后,我发现弄乱默认的 Xcode 启动屏幕并不是让你的闪屏等待一段时间和其他东西的最正确方法,所以我将新的视图控制器(名为splash的自定义类)添加到我的故事板中,然后在2 秒后它将显示我的主屏幕

UINavigationController
并且它不起作用,只是冻结在启动屏幕上

这是我的代码:

import UIKit

class splash: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        NSThread.sleepForTimeInterval(2.0)
        let vc = storyboard?.instantiateViewControllerWithIdentifier("mainmenu") as! UINavigationController
        self.presentViewController(vc, animated: true, completion: nil)
    }
}
ios swift splash-screen
3个回答
2
投票

我已经使用执行选择器解决了它

class splash: UIViewController {

override func viewDidLoad() {
    super . viewDidLoad()

    performSelector(#selector(splash.showmainmenu), withObject: nil, afterDelay: 2)
}

func showmainmenu(){

    performSegueWithIdentifier("mainmenu", sender: self)

}

0
投票

你想做什么 - 是一个丑陋的黑客行为。 不要

您应该创建自定义的

Splash View Controller
,其布局模仿您的默认启动屏幕图像,执行自定义动画(如果有),然后推送/呈现下一个视图控制器(在主线程上),或者根据您的应用程序执行您想要执行的任何操作要求。


0
投票
  1. 创建 SplashVC

创建一个新的 Swift 文件:在 Xcode 项目中,右键单击项目导航器中的项目文件夹,然后选择“从模板新建文件”->“Cocoa Touch 类”。将其命名为“SplashVC.swift”。

  1. 更新您的 AppDelegate.swift

    @主要 AppDelegate 类:UIResponder、UIApplicationDelegate {

     var window: UIWindow?
     private let navigationController = UINavigationController()
    
     func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
         window = UIWindow(frame: UIScreen.main.bounds)
         window?.rootViewController = navigationController
         window?.makeKeyAndVisible()
    
         goToSplashScreen()
         return true
     }
    
     private func goToSplashScreen() {
         let splashViewController = SplashVC(nibName: "SplashVC", bundle: nil)
         navigationController.setViewControllers([splashViewController], animated: false)
     }
    

    }

© www.soinside.com 2019 - 2024. All rights reserved.