iPhone闪屏作为一个短mp4视频swift ios



我正在尝试制作一个短的.mp4视频作为启动应用程序时的启动屏幕。

有这样的例子吗?

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

我认为一个解决方案是显示一个飞溅(IMG),然后播放你喜欢的视频。

要在swift中播放视频,请使用AV Foundationhttps://developer.apple.com/av-foundation/

您无法摆脱静态飞溅图像。在显示的同时操作系统正在加载应用程序并实例化内容,直到它准备呼叫您的UIApplicationDelegate。所以你所能做的就是不使用飞溅(黑屏几秒钟)或制作电影从显示的启动屏幕开始,使其看起来像静态图像会突然产生动画。

要在加载电影时摆脱黑屏,您可以尝试使播放器透明,并在播放器后面设置UIImageView显示了飞溅图像。行为是这样的:

显示启动屏幕(静态图像)。应用程序已加载。你看UIImageView,也显示了启动屏幕。最重要的是透明电影播放器。电影播放器终于加载了移动和开始播放。至少在理论上,这应该会产生效果静态图像突然开始动画化。

但如果你根本不使用闪屏(很多游戏都是这样做的),那么电影播放器显示黑屏也没关系一开始,你不会注意到。

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

您可以为"主界面"创建一个自定义ViewController,并在LaunchScreen之后使用它,其中使用AVPlayer。在swift中会有这样的东西:

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()
}

最新更新