iPhone 启动画面作为短 mp4 视频 swift ios

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

我正在尝试制作一个简短的 .mp4 视频作为启动屏幕,以便在启动应用程序时显示它。

有什么例子吗?

ios swift ios8
2个回答
10
投票

请参阅下面 DarkDust 在 在 iOS 应用程序中模拟启动视频中的答案。

我认为您的一个解决方案是显示启动画面(IMG),然后播放您喜欢的视频。

要快速播放视频,请使用 AV Foundation https://developer.apple.com/av-foundation/

您无法摆脱静态启动图像。虽然如图所示, 操作系统正在加载应用程序并实例化内容,直到它完成为止 准备好调用您的 UIApplicationDelegate。所以你所能做的就是 不使用启动画面(黑屏几秒钟)或制作您的电影 完全从显示的启动屏幕开始,因此它看起来像静态的 图像会突然动画。

要摆脱电影加载时的黑屏,您可以尝试 使播放器透明并在播放器后面有一个 UIImageView 显示启动图像。行为将是这样的:

显示启动画面(静态图像)。应用程序已加载。你看 UIImageView,也显示启动屏幕。在它的上面是 透明的电影播放器。电影播放器终于加载了动作并 开始播放它。至少从理论上来说,这应该会产生这样的效果 静态图像突然开始动画。

但是如果你根本不使用启动画面(很多游戏都会这样做), 那么电影播放器显示黑屏并不重要 一开始,你不会注意到。

关于在 UIImageView 中显示启动屏幕:不幸的是, 您必须测试界面旋转并手动加载图像, 无法查询显示的是哪个启动屏幕。如果你只 支持一种界面方向(同样,很多游戏都这样做) 当然没有这个问题。


3
投票

您可以为“主界面”创建一个自定义ViewController,并在LaunchScreen之后使用它,并在里面使用AVPlayer。很快就会是这样的:

var player: AVPlayer?

override func viewDidLoad() {
    super.viewDidLoad()

    loadVideo()
}

private func loadVideo() {

    //this line is important to prevent background music stop
    do {
        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient)
    } catch { }

    let path = NSBundle.mainBundle().pathForResource("your path", ofType:"mp4")

    player = AVPlayer(URL: NSURL(fileURLWithPath: path!))
    let playerLayer = AVPlayerLayer(player: player)

    playerLayer.frame = self.view.frame
    playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
    playerLayer.zPosition = -1

    self.view.layer.addSublayer(playerLayer)

    player?.seekToTime(kCMTimeZero)
    player?.play()
}
© www.soinside.com 2019 - 2024. All rights reserved.