Swift 4 和 Xcode 10。在应用启动时播放视频,完成后显示视图控制器

Ast*_*tro 4 ios swift4 xcode10

首先,我对 Xcode 10 和 Swift 4 完全陌生,我在这里搜索过但没有找到有效的代码。

我的目标:启动应用程序以播放本地存储的视频(称为“launchvideo”)。完成视频以显示/移动到具有“菜单”故事板 ID 的 UIviewcontroller

到目前为止,我的主导航控制器带有链接的视图控制器。我猜我需要一个 UIview 来保存要在此页面上播放的视频?

有人可以帮助新人吗?谢谢

Sag*_*han 6

首先将启动屏幕故事板从“常规”选项卡中的项目设置更改为“主故事板”。

创建一个具有以下名称的视图控制器并编写代码来实现 AVPlayer 播放视频。

import UIKit
import AVFoundation

class VideoLaunchVC: UIViewController {

    func setupAVPlayer() {

        let videoURL = Bundle.main.url(forResource: "Video", withExtension: "mov") // Get video url
        let avAssets = AVAsset(url: videoURL!) // Create assets to get duration of video.
        let avPlayer = AVPlayer(url: videoURL!) // Create avPlayer instance
        let avPlayerLayer = AVPlayerLayer(player: avPlayer) // Create avPlayerLayer instance
        avPlayerLayer.frame = self.view.bounds // Set bounds of avPlayerLayer
        self.view.layer.addSublayer(avPlayerLayer) // Add avPlayerLayer to view's layer.
        avPlayer.play() // Play video

        // Add observer for every second to check video completed or not,
        // If video play is completed then redirect to desire view controller.
        avPlayer.addPeriodicTimeObserver(forInterval: CMTime(seconds: 1, preferredTimescale: 1) , queue: .main) { [weak self] time in

            if time == avAssets.duration {
                let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ViewController") as! ViewController
                self?.navigationController?.pushViewController(vc, animated: true)
            }
        }
    }

    //------------------------------------------------------------------------------

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    //------------------------------------------------------------------------------

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        self.setupAVPlayer()  // Call method to setup AVPlayer & AVPlayerLayer to play video
    }
}
Run Code Online (Sandbox Code Playgroud)

主故事板: 视频启动VC

项目启动屏幕文件: 项目启动屏幕文件

另请参阅以下视频:

https://youtu.be/dvi0JKEpNTc