如何打造一個順滑的啟動頁面

? 最近項目開發(fā)要實現(xiàn)一個功能,在啟動頁面播放一段視頻,等視頻播放完再進入app主界面,于是便各種搜索 爬文,最后決定解決方案,視頻播放使用蘋果原生自帶框架AVFoundation,那就開干吧.

? 話說蘋果幫我們封裝了MPMoviePlayerController 和AVFoundation這倆個視頻播放框架,這兩個框架在使用上相對于ffmpeg這種重型裝甲來說,可謂是有天地之別,而且他那api都是一坨一坨的c語言,于是果斷放棄之.那AVFoundation呢?蘋果高級封裝 肯定簡單易學啊!對于AVFoundation ,這里不做深究,相信這篇文章能為你解疑答惑,或者有興趣的同學可以看看我github上面的項目源碼,我的視頻播放是怎樣子自定義的.這里要談的是我在實現(xiàn)這個啟動頁面的過程中遇到的坑.

第一個問題.

StoryBoard的根控制器在什么時候被加載的,我們都知道,當我們使用StoryBoard ?都要先初始化window的根控制器,方法是:

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

假如不指定呢,抱歉 這將導致一個惱人的警告:Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' - perhaps the designated entry point is not set?

什么鬼,我的思路是用代碼創(chuàng)建一個window并且在上面添加播放器,播放完成在跳到SB的指定控制器.我試著先給SB設置is inital VC,在添加下面的代碼:

用代碼設置窗口


然而,很可悲的是我這里的代碼好像失效了,模擬器現(xiàn)實的界面依然是我指定的SB上面的根控制器.各種資料收集后,發(fā)現(xiàn)原來StoryBoard指定了根控制器,在加載完xml文件后,內部代碼已經(jīng)幫我們設置好了AppDelegate的window了.也就是說我們只要這樣做就行了:


修改后

這樣就不會出現(xiàn)警告 又可以在window上添加自定義的window. so good!

那我們趕緊播放視頻吧!

好的.我們用自己寫的SLLaunchMoviePlayerView這個類來實現(xiàn)視頻播放,是的她可以在啟動頁播放了,很開心 然而:

這個1秒鐘是黑屏是????

? 當時我是這個表情:


WTF

第二個問題

我在想 這東西能順滑一點兒嗎?我們都知道AVFoundation視頻在播放完成的時候就會黑屏,有沒有辦法不黑,我用了一個投機取巧的辦法 ,當視頻播放到最后一偵的時候,暫停視頻,把我們自定義的SLAppLaunchPanel移除掉,下面是代碼:


比較currentTime和duration


在視頻暫停的回調方法中完成動畫


運行代碼:


太棒了!

?總結:有些坑,你跳或者不跳,她都在那里.只不過,不跳,我們就永遠沒有長進!!

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容