//
// MoviePlayerView.m
// Project1--Movie
//
// Created by imac on 15/9/4.
// Copyright (c) 2015年 Hong. All rights reserved.
//
#import "MoviePlayerView.h"
#import "UIView+ViewController.h"
@implementation MoviePlayerView
- (void)awakeFromNib{
//[super awakeFromNib];
_moviePlayer = [[MPMoviePlayerController alloc]initWithContentURL:nil];
//播放界面
_moviePlayer.view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
//关闭子视图的自适应
// _moviePlayer.backgroundView.autoresizesSubviews = NO;
_moviePlayer.view.frame = self.bgView.bounds;
_moviePlayer.controlStyle = MPMovieControlStyleNone;
[_moviePlayer play];
[self.bgView insertSubview:_moviePlayer.view atIndex:0];
// //创建音量滑动条
// _volumnSlider = [[MPVolumeView alloc]initWithFrame:CGRectMake(-75.f, 150.f, 160.f, 30.f)];
// //!!MPVolumnView只有在真机才显示
// _volumnSlider.transform = CGAffineTransformMakeRotation(M_PI_2);
// _volumnSlider.layer.anchorPoint = CGPointMake(0, 0);
//
// [self.volumnView addSubview:_volumnSlider];
//自定义滑动条
_volumeSlider = [[UISlider alloc]initWithFrame:CGRectMake(-35.f, 50.f, 110.f, 30.f)];
_volumeSlider.transform = CGAffineTransformMakeRotation(-M_PI_2);
_volumeSlider.maximumValue = 10;
_volumeSlider.minimumValue = 0;
_volumeSlider.value = 0;
//音量条的滑块样式
[_volumeSlider setThumbImage:[UIImage imageNamed:@"point"] forState:UIControlStateNormal];
[_volumeView addSubview:_volumeSlider];
[_volumeSlider addTarget:self action:@selector(volumeChange:) forControlEvents:UIControlEventValueChanged];
//进度条上滑块样式
[_processSlider setThumbImage:[UIImage imageNamed:@"progress_blue_bar@2x"] forState:UIControlStateNormal];
[_processSlider setThumbImage:[UIImage imageNamed:@"point"] forState:UIControlStateHighlighted];
//添加通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(duration) name:MPMoviePlayerLoadStateDidChangeNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(createProcessTimer) name:MPMoviePlayerNowPlayingMovieDidChangeNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieFinish) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
//如果没有URl就播放本地视频
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp4"];
_moviePlayer.contentURL = [NSURL fileURLWithPath:filePath];
[_moviePlayer play];
//缩放按钮
[_zoomBtn setImage:[UIImage imageNamed:@"zoomin"] forState:UIControlStateNormal];
[_zoomBtn setImage:[UIImage imageNamed:@"zoomout"] forState:UIControlStateSelected];
//锁定按钮
[_lockBtn setTitle:@"Lock" forState:UIControlStateNormal];
[_lockBtn setTitle:@"Unlock" forState:UIControlStateSelected];
_leftTimeLabel.text = @"00:00:00";
}
#pragma mark--layoutSubviews
- (void)layoutSubviews{
//获取屏幕方向
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
if (orientation == UIInterfaceOrientationPortrait) {
self.bgView.size = CGSizeMake(kWidth, 250.f);
self.frame = self.bgView.bounds;
}else if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight){
if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
self.bgView.size = CGSizeMake(kWidth, kHeight);
}else{
self.bgView.size = CGSizeMake(kHeight, kHeight);
}
self.frame = self.bgView.bounds;
}else{
NSLog(@"test");
}
}
#pragma mark--Notification
- (void)duration{
//视频时长
_processSlider.maximumValue = _moviePlayer.duration;
_rightTimeLabel.text = [self calculateTime:_moviePlayer.duration];
}
- (void)createProcessTimer{
_processTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(setProcess:) userInfo:nil repeats:YES];
}
- (void)movieFinish{
[_processTimer invalidate];
_processTimer = nil;
}
- (void)volumeChange:(UISlider *)slider{
//[MPMusicPlayerController applicationMusicPlayer].volume = slider.value;
}
//设置进度
- (void)setProcess:(NSTimer *)timer{
_second++;
self.leftTimeLabel.text = [self calculateTime:_second];
[_processSlider setValue:_second animated:YES];
}
- (NSString *)calculateTime:(NSTimeInterval)time{
//小时
int h = time / 3600;
int retain = (int)time % 3600;
//分钟
int m = retain / 60;
//秒
int s = retain % 60;
return [NSString stringWithFormat:@"%02d:%02d:%02d",h,m,s];
}
//- (void)setUrl:(NSString *)url{
// _url = url;
//
// if (url.length > 0) {
// _moviePlayer.contentURL = [NSURL URLWithString:_url];
// _moviePlayer.contentURL = [NSURL URLWithString:url];
// [_moviePlayer play];
//
// }else{
// //如果没有URl就播放本地视频
// NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp4"];
// _moviePlayer.contentURL = [NSURL fileURLWithPath:filePath];
// [_moviePlayer play];
// }
//}
#pragma mark-Touch Method
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
self.upView.hidden = !self.upView.hidden;
self.volumeView.hidden = !self.volumeView.hidden;
self.bottomView.hidden = !self.bottomView.hidden;
}
- (IBAction)lockClick:(UIButton *)sender {
sender.selected = !sender.selected;
}
- (IBAction)playClick:(UIButton *)sender {
[_moviePlayer pause];
sender.selected = !sender.selected;
if (sender.selected) {
[sender setImage:[UIImage imageNamed:@"play"] forState:UIControlStateNormal];
[_moviePlayer pause];
[_processTimer invalidate];
_processTimer = nil;
}else{
[sender setImage:[UIImage imageNamed:@"pause"] forState:UIControlStateNormal];
[_moviePlayer play];
[self createProcessTimer];
}
}
//进度条滑动触发事件
- (IBAction)processChange:(UISlider *)sender {
self.leftTimeLabel.text = [self calculateTime:sender.value];
//调整播放进度
[_moviePlayer setCurrentPlaybackTime:sender.value];
}
- (IBAction)zoomClick:(UIButton *)sender {
sender.selected = !sender.selected;
if (sender.selected) {
// self.bgView.transform = CGAffineTransformMakeRotation(-M_PI_2);
//self.bgView.origin = CGPointMake(0 , 300);
//self.bgView.transform = CGAffineTransformMakeScale(kHeight/self.bgView.size.width, kWidth/self.bgView.size.height);
//self.bgView.frame =[UIScreen mainScreen].bounds;
// self.bgView.transform = CGAffineTransformMakeTranslation(0, (kHeight-_moviePlayer.view.size.height)/2);
// self.viewController.view.backgroundColor = [UIColor blackColor];
}else{
// self.bgView.transform = CGAffineTransformMakeTranslation(0, 0);
// self.viewController.view.backgroundColor = [UIColor whiteColor];
}
}
- (IBAction)columeClick:(UIButton *)sender {
sender.selected = !sender.selected;
if (sender.selected) {
[sender setImage:[UIImage imageNamed:@"volume_mute"] forState:UIControlStateNormal];
_volumeSlider.value = 0;
}else{
[sender setImage:[UIImage imageNamed:@"volume.png"] forState:UIControlStateNormal];
}
}
@end
原文地址:http://10577688.blog.51cto.com/10567688/1699778