开始时准备封装成ViewController的相机,但是在不改我相机控件源码的情况下,使用者很难自定义UI。于是想到将相机核心功能封装到View里,暴露出功能方法给外面调用,调用者只需将LFCamera贴到自己的控制器里即可,相机的UI由使用者在自己的控制器里画。
一、使用方法
在你的控制器中加上相机只需如下三行代码即可
- (void)viewDidLoad { [super viewDidLoad]; self.lfCamera = [[LFCamera alloc] initWithFrame:self.view.bounds]; //设置有效区域(可不设置,不设置则不显示遮罩层和边框) self.lfCamera.effectiveRect = CGRectMake(20, 200, self.view.frame.size.width - 40, 280); [self.view insertSubview:self.lfCamera atIndex:0]; }
然后使用者只需在自己的控制器添加一些按钮如:拍照、闪光灯开关、切换前后摄像头等按钮,按钮的事件调用LFCamera里的一些方法即可。
二、功能
看看.h文件就知道有哪些功能了,
//闪光灯模式
typedef NS_ENUM(NSInteger, LFCaptureFlashMode) {
LFCaptureFlashModeOff = 0,
LFCaptureFlashModeOn = 1,
LFCaptureFlashModeAuto = 2
};
@interface LFCamera : UIView
@property (assign, nonatomic) CGRect effectiveRect;//拍摄有效区域(可不设置,不设置则不显示遮罩层和边框)
//有效区边框色,默认橘色
@property (nonatomic, strong) UIColor *effectiveRectBorderColor;
//遮罩层颜色,默认黑色半透明
@property (nonatomic, strong) UIColor *maskColor;
@property (nonatomic) UIView *focusView;//聚焦的view
- (instancetype)initWithFrame:(CGRect)frame;
/**获取摄像头方向*/
- (BOOL)isCameraFront;
/**获取闪光灯模式*/
- (LFCaptureFlashMode)getCaptureFlashMode;
/**切换闪光灯*/
- (void)switchLight:(LFCaptureFlashMode)flashMode;
/**切换摄像头*/
- (void)switchCamera:(BOOL)isFront;
/**拍照*/
- (void)takePhoto:(void (^)(UIImage *img))resultBlock;
/**重拍*/
- (void)restart;
源码地址:https://github.com/zhanglinfeng/LFCamera
2017.12.25修改:
这只是LFKit的一个子库,LFKit地址https://github.com/zhanglinfeng/LFKit
以后只在LFKit中维护了
只需LFCamera的 pod 'LFKit/Component/LFCamera'
需要LFKit中所有自定义控件的pod 'LFKit/Component'
需要总库的 pod 'LFKit'
需要总库的 pod 'LFKit'