現在有越來越多的 app 的登入/註冊介面的背景是播放視訊或者 gif,我主要看了 Uber 和 keep 的登入介面再配合拉勾的登入介面仿作了一個登入介面。 1.首先,查資料 我在 github 上找到了這兩個庫: -STLBGVideo 這個庫是 oc 寫的,但你的登入頁面需要繼承這個 VC,借用了下里面的資源,侵權告知 -VideoSplashKit 國外牛人寫的 swift 版本,借鑑了下里面的思路 -附上本文的連結 https://github.com/sfmDev/videoLoginDemo 2.寫視訊播放器 先匯入 <AVFoundation/AVFoundation.h>
@interface ViewController ()
/**
* 全屏播放器
*/
@property (strong, nonatomic) AVPlayer *player;
@end
複製程式碼
建立播放圖層,AVPlayer的播放器 是加在 layer 層上的,就是 AVPlayerLayer
- (void)setupForAVplayerView
{
AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player];
playerLayer.frame = self.view.bounds;
[self.view.layer addSublayer:playerLayer];
}
複製程式碼
/**
* 初始化播放器
*/
- (AVPlayer *)player
{
if (!_player) {
AVPlayerItem *playerItem = [self getPlayItem];
_player = [AVPlayer playerWithPlayerItem:playerItem];
//設定重複播放
_player.actionAtItemEnd = AVPlayerActionAtItemEndNone; // set this
//視訊播放完發通知
[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(__playerItemDidPlayToEndTimeNotification:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:nil];
}
return _player;
}
複製程式碼
- (void)__playerItemDidPlayToEndTimeNotification:(NSNotification *)sender
{
[_player seekToTime:kCMTimeZero]; // 設定從頭繼續播放
}
複製程式碼
設定播放的內容
- (AVPlayerItem *)getPlayItem
{
NSString *filePath = [[NSBundle mainBundle]pathForResource:@"BridgeLoop-640p" ofType:@"mp4"];
NSURL *url = [NSURL fileURLWithPath:filePath];
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:url];
return playerItem;
}
複製程式碼
現在得到這樣的一個視訊播放,上面的註冊 登入是我自己加的
現在,問題又來了,如果程式從前臺切到後臺,再從後臺切到前臺,視訊會停止播放
- (void)applicationDidBecomeActive:(UIApplication *)application {
//在app 進入活躍的時候發通知,讓視訊繼續播放
[[NSNotificationCenter defaultCenter]postNotificationName:@"videoshouldplay" object:nil];
}
複製程式碼
這樣基本就完成了視訊播放的主要設定,還可以設定一些動畫,我寫的 demo 裡的登入時仿照拉勾寫的,暫時還沒有打到我理想的效果,就先不寫了,放在下一篇中再講登入介面中的動畫,覺得有興趣的同學歡迎 star