前言
因?yàn)楫a(chǎn)品需求以及后臺(tái)都未完成跺株,所以最近在公司也沒(méi)什么工作要做帐要,主要也就看看技術(shù)文章,寫寫東西圾叼。今天的這個(gè)東西是一個(gè)關(guān)于啟動(dòng)頁(yè)或者引導(dǎo)頁(yè)的視頻動(dòng)畫效果的實(shí)現(xiàn)過(guò)程,原型也是我們產(chǎn)品給我看的一個(gè)APP捺癞。
代碼實(shí)現(xiàn)
- 廢話不多說(shuō)夷蚊,先上效果圖
- 接下來(lái)說(shuō)下思路了
說(shuō)實(shí)話剛開始我有點(diǎn)彷徨的,因?yàn)槲乙郧安](méi)有做過(guò)髓介,接下來(lái)我把那個(gè)APP的里的資源給拿到了惕鼓,發(fā)現(xiàn)一個(gè).mp4的視頻,我就記起我以前看過(guò)的一篇文章iOS<咸魚APP>新特性界面-視頻動(dòng)畫唐础,真是慚愧箱歧,借鑒了一下,然后就有了我的這篇文章一膨。
主要思路就是用一個(gè)控制器來(lái)作為播放視頻的載體呀邢,然后在讓這個(gè)控制器作為根視圖,視頻播放完成之后那就該干嘛干嘛了豹绪。
感覺(jué)廢話說(shuō)的有點(diǎn)多啊价淌,下面就放代碼好了
先新建一個(gè)控制器AnimationViewController
在控制器中新建一個(gè)屬性moviePlayer
,記得要先引入系統(tǒng)庫(kù)<MediaPlayer/MediaPlayer.h>
@property (nonatomic, strong) MPMoviePlayerController *moviePlayer;
設(shè)置moviePlayer
我是在懶加載中直接設(shè)置的
-(MPMoviePlayerController *)moviePlayer{
if (!_moviePlayer) {
_moviePlayer = [[MPMoviePlayerController alloc]init];
[_moviePlayer.view setFrame:self.view.bounds];
//設(shè)置自動(dòng)播放
[_moviePlayer setShouldAutoplay:NO];
//設(shè)置源類型 因?yàn)樾绿匦砸话愣际遣シ疟镜氐男∫曨l 所以設(shè)置源類型為file
_moviePlayer.movieSourceType = MPMovieSourceTypeFile;
//取消控制視圖 如:播放暫停等
_moviePlayer.controlStyle = MPMovieControlStyleNone;
[self.view addSubview:_moviePlayer.view];
//監(jiān)聽播放完成
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(playFinsihed) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
}
return _moviePlayer;
}
然后在.h
中公開一個(gè)moviePath
視頻的路徑瞒津,還有一個(gè)結(jié)束播放的blockplayFinished
等下需要钉汗。
AnimationViewController
中也算差不多了反番,畢竟也沒(méi)什么東西,接下來(lái)我們?nèi)?code>AppDelegate中聲明一個(gè)AnimationViewController
屬性
- (AnimationViewController *)animationViewController{
if (!_animationViewController) {
_animationViewController = [[AnimationViewController alloc]init];
//設(shè)置本地視頻路徑
_animationViewController.moviePath = [[NSBundle mainBundle] pathForResource:@"V" ofType:@"mp4"];
_animationViewController.playFinished = ^{
UINavigationController *rootNav = [[UINavigationController alloc] initWithRootViewController:[[ViewController alloc] init]];
[UIApplication sharedApplication].keyWindow.rootViewController = rootNav;
};
}
return _animationViewController;
}
然后在AppDelegate
的啟動(dòng)方法把這個(gè)控制器設(shè)為根視圖
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
self.window.rootViewController = self.animationViewController;
[self.window makeKeyAndVisible];
return YES;
}
小結(jié)
基本算是完成了,慣例放上我的源碼還有我的個(gè)人網(wǎng)站莫杈,有需要的可以去看一下伟墙,最后希望可以幫到大家不撑。
這里要說(shuō)一句怪嫌,剛開始我用這個(gè)路徑但是一直為空考传,后來(lái)我添加了一個(gè)名字為Resource
的文件夾把mp4放進(jìn)去就好了,也不知道為什么前联。有知道也可以告訴我