zoukankan      html  css  js  c++  java
  • iOS 自定义相机带拍摄区域边框及半透明遮罩层(含源码)

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

  • 相关阅读:
    【缓慢的自学ing】 自己写一个《Minecraft》记录
    Unity随笔3:按钮的"导航"功能
    【随随随随笔】一些STL的糖
    【算法氵】筛法
    【纯感慨】好吃的蒟蒻
    【随随随随笔】OJ错题记录
    【纯感慨】最不擅长的就是配置软件
    【C++Primer笔记】顶层const、常量指针
    hdu 2475 动态树
    hdu 1281 棋盘游戏 网络流
  • 原文地址:https://www.cnblogs.com/zhanglinfeng/p/6763766.html
Copyright © 2011-2022 走看看