前言:公司需求如下:點擊一個按鈕播放一個視頻,最多同時播放4個;雙擊某視頻讓其全屏,單擊再恢復原來的樣子。IOS的播放器有兩種,MPMoviePlayerController,AVAudioPlayer。首先我嘗試的是前者,發現並不能讓兩個視頻同時播放,當播放第二個視頻的時候,第一個就自動停止了;后來又找了些資料試了試后者,完美解決了這個問題。
多個播放器同時播放,資料參考自: http://ios.jobbole.com/84287/ ,這里介紹的挺詳細的,文章后面還有項目可以下載演示,這里就不多說了。
如果需要播放暫停,參考:http://www.xuebuyuan.com/1918999.html
//雙擊全屏
UITapGestureRecognizer *doubleTapGestureRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(doubleTap:)];
[doubleTapGestureRecognizer setNumberOfTapsRequired:2];
[player.view addGestureRecognizer:doubleTapGestureRecognizer];
//單擊退出全屏
UITapGestureRecognizer *singleTapGestureRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(singleTap:)];
[singleTapGestureRecognizer setNumberOfTapsRequired:1];
[player.view addGestureRecognizer:singleTapGestureRecognizer];
//沒有檢測到雙擊就調用單擊
[singleTapGestureRecognizer requireGestureRecognizerToFail:doubleTapGestureRecognizer];
先用全局變量保存播放器的frame,在退出全屏的時候將之前保存的值賦值給播放器就行了。
寫完之后又遇到了一個問題:當退出頁面的時候,盡管把通知什么的都移除了,但是播放器還是會有聲音在播放。
解決方法如下:
[self.player pause];
[self.player.currentItem cancelPendingSeeks];
[self.player.currentItem.asset cancelLoading];
在移除通知的方法里面加上如上代碼,問題就結局了。