如何打造一个顺滑的启动页面

  最近项目开发要实现一个功能,在启动页面播放一段视频,等视频播放完再进入app主界面,于是便各种搜索 爬文,最后决定解决方案,视频播放使用苹果原生自带框架AVFoundation,那就开干吧.

  话说苹果帮我们封装了MPMoviePlayerController 和AVFoundation这俩个视频播放框架,这两个框架在使用上相对于ffmpeg这种重型装甲来说,可谓是有天地之别,而且他那api都是一坨一坨的c语言,于是果断放弃之.那AVFoundation呢?苹果高级封装 肯定简单易学啊!对于AVFoundation ,这里不做深究,相信这篇文章能为你解疑答惑,或者有兴趣的同学可以看看我github上面的项目源码,我的视频播放是怎样子自定义的.这里要谈的是我在实现这个启动页面的过程中遇到的坑.

第一个问题.

StoryBoard的根控制器在什么时候被加载的,我们都知道,当我们使用StoryBoard  都要先初始化window的根控制器,方法是:

在控制面板指定一个根控制器

假如不指定呢,抱歉 这将导致一个恼人的警告:Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' - perhaps the designated entry point is not set?

什么鬼,我的思路是用代码创建一个window并且在上面添加播放器,播放完成在跳到SB的指定控制器.我试着先给SB设置is inital VC,在添加下面的代码:

如何打造一个顺滑的启动页面_第1张图片
用代码设置窗口


然而,很可悲的是我这里的代码好像失效了,模拟器现实的界面依然是我指定的SB上面的根控制器.各种资料收集后,发现原来StoryBoard指定了根控制器,在加载完xml文件后,内部代码已经帮我们设置好了AppDelegate的window了.也就是说我们只要这样做就行了:


如何打造一个顺滑的启动页面_第2张图片
修改后

这样就不会出现警告 又可以在window上添加自定义的window. so good!

那我们赶紧播放视频吧!

好的.我们用自己写的SLLaunchMoviePlayerView这个类来实现视频播放,是的她可以在启动页播放了,很开心 然而:

如何打造一个顺滑的启动页面_第3张图片
这个1秒钟是黑屏是????

  当时我是这个表情:


如何打造一个顺滑的启动页面_第4张图片
WTF

第二个问题

我在想 这东西能顺滑一点儿吗?我们都知道AVFoundation视频在播放完成的时候就会黑屏,有没有办法不黑,我用了一个投机取巧的办法 ,当视频播放到最后一侦的时候,暂停视频,把我们自定义的SLAppLaunchPanel移除掉,下面是代码:


如何打造一个顺滑的启动页面_第5张图片
比较currentTime和duration


如何打造一个顺滑的启动页面_第6张图片
在视频暂停的回调方法中完成动画


运行代码:


太棒了!

 总结:有些坑,你跳或者不跳,她都在那里.只不过,不跳,我们就永远没有长进!!

附上github地址:点我,我是小王子!

你可能感兴趣的:(如何打造一个顺滑的启动页面)