如何编程延迟?

How to program delay?

我有两个视图控制器。

我在第一个 VC 中制作了 imageview(在 Gif 文件中)。 5 秒后,我希望将页面传递给第二个 vc。第一个VC代码是这样的:

class LemonVC: UIViewController {

    @IBOutlet weak var LemonGif: UIImageView!
    override func viewDidLoad() {
        super.viewDidLoad()


        LemonGif.loadGif(name: "sufoo")

    //        DispatchQueue.main.asyncAfter(deadline: .now() + 
    .seconds(4), execute: {
    //
    //        })
        // Do any additional setup after loading the view.
    }

第一个VC名字叫柠檬VC

第二个VC名字是第二个VC

试试这个:

  DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(5), execute: {
// go some where
// example
let storyBoard = UIStoryboard(name: "Main", bundle: nil)
        let introRootVC = storyBoard.instantiateInitialViewController() // it's main controller, if you want to another create Story board ID 
        self.present(introRootVC!, animated: true, completion: nil)
})

您可以更改延迟,seconds(5) <- here

一种可能性是在第一个和第二个控制器之间使用 segue 来定义导航路径(从第一个控制器中的 "yellow" 点拖到第二个控制器上。此示例使用 show种类)

确保你给它一个标识符名称,你的代码中需要这个。

我可能会使用 viewDidAppear 而不是 viewDidLoad,至少这意味着视图已经转换到屏幕上。

然后,您需要做的就是使用UIViewController#performSegue执行segue,它将呈现下一个控制器

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

    DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(5), execute: {
        self.performSegue(withIdentifier: "skipTo", sender: self)
    })
}