iOS 自定义相机带拍摄区域边框及半透明遮罩层(含源码)

本文介绍了一种封装成UIView的相机组件LFCamera,它允许开发者轻松地将相机功能集成到自己的应用中,并提供了丰富的自定义选项。通过简单的代码,可以实现相机的有效区域设置、闪光灯控制、摄像头切换等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  开始时准备封装成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'

 

转载于:https://www.cnblogs.com/zhanglinfeng/p/6763766.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值