开始时准备封装成ViewController的相机,但是在不改我相机控件源码的情况下,使用者很难自定义UI。于是想到将相机核心功能封装到View里,暴露出功能方法给外面调用,调用者只需将LFCamera贴到自己的控制器里即可,相机的UI由使用者在自己的控制器里画。

一、使用方法

在你的控制器中加上相机只需如下三行代码即可

- (void)viewDidLoad {
[super viewDidLoad];
self.lfCamera = [[LFCamera alloc] initWithFrame:self.view.bounds];
//设置有效区域(可不设置,不设置则不显示遮罩层和边框)
self.lfCamera.effectiveRect = CGRectMake(, , self.view.frame.size.width - , );
[self.view insertSubview:self.lfCamera atIndex:];
}

然后使用者只需在自己的控制器添加一些按钮如:拍照、闪光灯开关、切换前后摄像头等按钮,按钮的事件调用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'

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

  1. C# Winform 实现自定义半透明遮罩层介绍

    在网页中通过div+css实现半透明效果不难,今天我们看看一种在winfrom中实现的方法: 效果图如下,正常时: 显示遮罩层时: 自定义遮罩层控件的源码如下: View Row Code 1 usi ...

  2. iOS个人中心渐变动画、微信对话框、标签选择器、自定义导航栏、短信验证输入框等源码

    iOS精选源码 简单的个人中心页面-自定义导航栏并予以渐变动画 程序员取悦女票的正确姿势---Tip1(iOS美容篇) iOS 前台重启应用和清除角标的问题 微信原生提醒对话框3.0 JHLikeBu ...

  3. 【.net+jquery】绘制自定义表单(含源码)

    前言 两年前在力控的时候就想做一个类似的功能,当时思路大家都讨论好了,诸多原因最终还是夭折了.没想到两年多后再这有重新提出要写一个绘制表单的功能.对此也是有点小激动呢?总共用时8.5天的时间基本功能也 ...

  4. jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)

    上一篇记录了BaiduTemplate模板引擎使用示例附源码,在此基础上对使用方法进行了封装 自定义插件jajaxrefresh.js 代码如下: //闭包限定命名空间 (function ($) { ...

  5. iOS二十种超酷时尚艺术滤镜汇总【附源码】

    本文总结了20种ios滤镜都是基于GPUImage的,有3种滤镜是GPUImage库中包含的,还有17种是Instagram中的经典滤镜,集成在一个项目中.使用GPUImage可以非常容易创建我们自己 ...

  6. 实现iOS项目一款用swift实现的应用top源码

    Top 后台 Swift版本Ios 8 / iPhone 5S适配这边有个登陆,如果你们想测试的话,可以用这个账号, 账号:18868879362 密码:420562   源码下载: http://c ...

  7. android新闻项目、饮食助手、下拉刷新、自定义View进度条、ReactNative阅读器等源码

    Android精选源码 Android仿照36Kr官方新闻项目课程源码 一个优雅美观的下拉刷新布局,众多样式可选 安卓版本的VegaScroll滚动布局 android物流详情的弹框 健身饮食记录助手 ...

  8. android高仿抖音、点餐界面、天气项目、自定义view指示、爬取美女图片等源码

    Android精选源码 一个爬取美女图片的app Android高仿抖音 android一个可以上拉下滑的Ui效果 android用shape方式实现样式源码 一款Android上的新浪微博第三方轻量 ...

  9. Springboot+Redisson自定义注解一次解决重复提交问题(含源码)

    前言   项目中经常会出现重复提交的问题,而接口幂等性也一直以来是做任何项目都要关注的疑难点,网上可以查到非常多的方案,我归纳了几点如下:   1).数据库层面,对责任字段设置唯一索引,这是最直接有效 ...

随机推荐

  1. source改变当前路径

    转摘自:http://hi.baidu.com/homappy/item/90e416525d2faf958c12edb7 Shell 脚本执行有三种方法 bash 脚本名 sh 脚本名 chmod ...

  2. 浏览器 连不上网 (3):DNS 服务器问题

    解决:设置一下DNS服务器的地址 步骤: 打开网络和共享中心(网络和 Internet设置)-> 更改适配器 -> 双击我们连接的 无线网(WiFi式) 或 以太网(网线式): 从出现的窗 ...

  3. Android 网络编程--上传文件及相应的参数到服务器

    之前一直在做SiteCheck的项目,所用到的知识大部分都涉及到网络编程方面,所以现在有时间先把它的使用方法及一些注意事项记录下来.在这里我用两种例子让大家了解它的使用方法: (1)上传图片及相应参数 ...

  4. OpenCV+Java环境搭建

    1.官网地址http://opencv.org/ 1.首先下载OpenCV2.4.6,下载的时候,选择windows版的.然后安装 2.其实安装的过程就是解压的过程,并没有什么安装向导之类的,安装完成 ...

  5. Ansible在节点间传输文件

    1. 在控制节点(the control machine )与远程节点( the current remote host)之间传输文件 1.1 如果需要传输文件,可以使用copy模块,注意copy模块 ...

  6. 嵌入式上 iscsi实现

    前言 去年公司设备(haisi3516)上需要提供iscsi的功能,于是花了几天时间探究了下.linux内核(2.6.xx)支持iscsi,只是我发现当时我们设备的内核编译时没有选上,于是重新编译了内 ...

  7. 聊聊C++模板函数与非模板函数的重载

    前言 函数重载在C++中是一个很重要的特性.之所以有了它才有了操作符重载.iostream.函数子.函数适配器.智能指针等非常有用的东西. 平常在实际的应用中多半要么是模板函数与模板函数重载,或者是非 ...

  8. [ Python - 3 ] python3.5中不同的读写模式

    r 只能读.r+可读可写,不会创建不存在的文件.如果直接写文件,则从顶部开始写,覆盖之前此位置的内容,如果先读后写,则会在文件最后追加内容.w+ 可读可写 如果文件存在 则覆盖整个文件不存在则创建w ...

  9. codeforces 739E

    官方题解是一个n2logn的dp做法 不过有一个简单易想的费用流做法 对每个小精灵,连边(A,i,1,pi) (B,i,1,ui) (i,t,1,0) (i,t,1,-pi*ui) 最后连边(s,A, ...

  10. C#实现HTML转图片(网页快照)

    有时候我们需要将网页转成图片,那么可以使用WebBrowser来生成网页快照,废话不多说,代码如下 1.网页快照帮助类(如果是BS或控制台需要引用System.Windows.Forms类库): pu ...