iOS开发之仿微信小视频功能实现

这次的任务是模仿微信实现小视频功能

此前从未接触视频这类多媒体的开发,有点不知道从何下手的感觉

后面发现在pod里面有一个wechatshortvideo的第三方控件,很多问题就能在这里得到解决。

第一部分我们先来介绍一下按钮的事件

小视频里面的按住拍功能其实是调用了按钮里面的许多事件的,这几个事件可能在一般情况下不会用,可是认识一下这几个事件还是比较有用的

1.touch down 按钮被按下

2.touch up inside 按钮被点击,而且接触手指放开时,手指在按钮里面。

3.touch up outside 按钮被点击,而且接触手指放开时,手指在按钮外面。

4.touch drag enter 按钮在点击的过程中,接触手指进入按钮里面。

5.touch drag exit 按钮在点击的过程中,接触手指离开按钮范围。

只要监听了这些事件,对于微信小视频按钮的处理,就得到了很好的解决。

第二部分是介绍一下SCrecorder

这是一个第三方控件,这是的recorder需要装载在一个uiview里面。

    _recorder = [SCRecorder recorder];
    _recorder.captureSessionPreset = AVCaptureSessionPreset640x480;//设置分辨率
    _recorder.maxRecordDuration = CMTimeMake(300, 30);
    _recorder.delegate = self;
    _recorder.autoSetVideoOrientation = YES;
    
    UIView *previewView = self.scanPreviewView;
    _recorder.previewView = previewView;//把recorder装载uiview里面。
    
初始化一个recorder之后,就可以用[(screcorder) record](开始录制)和[(screcorder) pause](停止录制)来控制录制的情况。

三、介绍一下SCplayer

录制完之后自然就是能够播放,这里也用到了screcorder里面带的scplayer。

_player = [SCPlayer player];
    SCVideoPlayerView *playerView = [[SCVideoPlayerView alloc] initWithPlayer:_player];//用作装载scplayer
    playerView.playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
    playerView.frame = self.scanPreviewView.bounds;
    playerView.autoresizingMask = self.scanPreviewView.autoresizingMask;//设为自动填充
    [self.scanPreviewView addSubview:playerView];
    _player.loopEnabled = YES;//循环播放
    [_player setItemByAsset:_recorder.session.assetRepresentingSegments];//将文件路径转化为avasset,用于scplayer播放
初始化一个scplayer之后,就可以用[(scplayer) play](开始播放)和[(scplayer) pause](停止播放)来控制播放

题外知识:纯代码生成控件以及控制

这次的任务完成之后,对于控件我更加了解,一个控件的生成以及控制,其实是可以用纯代码去实现的,而且这样做起来会比较方便。

比如说一个button的纯代码生成:

UIbutton *button = [[UIbutton alloc]init];
//对button的背景和title处理
button.frame=CGRectmake;
[superview addsubview:button];

代码监听button的话就用add target。

对于用storyboard,我个人更加热衷于纯代码生成,而且这样会比较方便,debugger起来也会轻松很多。



你可能感兴趣的:(iOS开发之仿微信小视频功能实现)