温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

简单的播放界面

发布时间:2020-07-17 12:46:20 来源:网络 阅读:285 作者:hmymy 栏目:开发技术

//

//  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 p_w_picpathNamed:@"point"] forState:UIControlStateNormal];

    [_volumeView addSubview:_volumeSlider];

    [_volumeSlider addTarget:self action:@selector(volumeChange:) forControlEvents:UIControlEventValueChanged];

    

    //进度条上滑块样式

    [_processSlider setThumbImage:[UIImage p_w_picpathNamed:@"progress_blue_bar@2x"] forState:UIControlStateNormal];

    [_processSlider setThumbImage:[UIImage p_w_picpathNamed:@"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 p_w_picpathNamed:@"zoomin"] forState:UIControlStateNormal];

    [_zoomBtn setImage:[UIImage p_w_picpathNamed:@"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 p_w_picpathNamed:@"play"] forState:UIControlStateNormal];

        [_moviePlayer pause];

        [_processTimer invalidate];

        _processTimer = nil;

    }else{

        [sender setImage:[UIImage p_w_picpathNamed:@"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 p_w_picpathNamed:@"volume_mute"] forState:UIControlStateNormal];

        _volumeSlider.value = 0;

        

    }else{

        [sender setImage:[UIImage p_w_picpathNamed:@"volume.png"] forState:UIControlStateNormal];

    }

}



@end


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI