天天看點

iOS實作簡單登入頁背景 為視訊動畫

直接上代碼:參考前輩的demo,做了一個優化 

注意點:1,全屏播放 2,循環播放 

@interface STLVideoViewController ()

@property (nonatomic,strong) AVPlayer *avplayer;

@property (nonatomic,strong) AVAudioSession *avaudioSession;

@property (nonatomic,assign) BOOL isLoop;

@end

@implementation STLVideoViewController

#pragma mark - allow background music still play

- (void)preparePlayback {

    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:[STLVideoFunctions getVideoUrl] ofType:[STLVideoFunctions getVideoType]]];

    AVAsset *avAsset = [AVAsset assetWithURL:url];

    AVPlayerItem *avPlayerItem =[[AVPlayerItem alloc] initWithAsset:avAsset];

    _avplayer = [[AVPlayer alloc]initWithPlayerItem:avPlayerItem];

   _avplayer.actionAtItemEnd = AVPlayerActionAtItemEndNone; // set this

    AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:_avplayer];

    playerLayer.backgroundColor = [UIColor redColor].CGColor;

    playerLayer.frame = self.view.bounds;

    playerLayer.videoGravity =  AVLayerVideoGravityResizeAspectFill;

    [self.view.layer addSublayer:playerLayer];

}

#pragma mark - Notifications

- (void)playerItemDidPlayToEndTimeNotification:(NSNotification *)notification {

    [_avplayer seekToTime:kCMTimeZero]; // 設定從頭繼續播放

}

#pragma mark - life cycle

- (void)viewDidLoad {

    [super viewDidLoad];

    [self preparePlayback];

}

- (void)viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];

    //視訊播放完發通知

    [[NSNotificationCenter defaultCenter] addObserver:self

                                            selector:@selector(playerItemDidPlayToEndTimeNotification:)

                                                name:AVPlayerItemDidPlayToEndTimeNotification

                                            object:nil];

        [self.avplayer play];

}

- (void)viewWillDisappear:(BOOL)animated {

    [super viewWillDisappear:animated];

    //視訊播放完發通知

    [[NSNotificationCenter defaultCenter] removeObserver:self name:AVPlayerItemDidPlayToEndTimeNotification object:nil];

    [self.avplayer pause];

}

- (void)viewDidDisappear:(BOOL)animated {

    [super viewDidDisappear:animated];

}

@end

有什麼好的建議可以留言 一起學習 探讨,謝謝!