iOS 自定义相机带拍摄区域边框及半透明遮罩层(含源码)
开始时准备封装成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 自定义相机带拍摄区域边框及半透明遮罩层(含源码)的更多相关文章
- C# Winform 实现自定义半透明遮罩层介绍
在网页中通过div+css实现半透明效果不难,今天我们看看一种在winfrom中实现的方法: 效果图如下,正常时: 显示遮罩层时: 自定义遮罩层控件的源码如下: View Row Code 1 usi ...
- iOS个人中心渐变动画、微信对话框、标签选择器、自定义导航栏、短信验证输入框等源码
iOS精选源码 简单的个人中心页面-自定义导航栏并予以渐变动画 程序员取悦女票的正确姿势---Tip1(iOS美容篇) iOS 前台重启应用和清除角标的问题 微信原生提醒对话框3.0 JHLikeBu ...
- 【.net+jquery】绘制自定义表单(含源码)
前言 两年前在力控的时候就想做一个类似的功能,当时思路大家都讨论好了,诸多原因最终还是夭折了.没想到两年多后再这有重新提出要写一个绘制表单的功能.对此也是有点小激动呢?总共用时8.5天的时间基本功能也 ...
- jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
上一篇记录了BaiduTemplate模板引擎使用示例附源码,在此基础上对使用方法进行了封装 自定义插件jajaxrefresh.js 代码如下: //闭包限定命名空间 (function ($) { ...
- iOS二十种超酷时尚艺术滤镜汇总【附源码】
本文总结了20种ios滤镜都是基于GPUImage的,有3种滤镜是GPUImage库中包含的,还有17种是Instagram中的经典滤镜,集成在一个项目中.使用GPUImage可以非常容易创建我们自己 ...
- 实现iOS项目一款用swift实现的应用top源码
Top 后台 Swift版本Ios 8 / iPhone 5S适配这边有个登陆,如果你们想测试的话,可以用这个账号, 账号:18868879362 密码:420562 源码下载: http://c ...
- android新闻项目、饮食助手、下拉刷新、自定义View进度条、ReactNative阅读器等源码
Android精选源码 Android仿照36Kr官方新闻项目课程源码 一个优雅美观的下拉刷新布局,众多样式可选 安卓版本的VegaScroll滚动布局 android物流详情的弹框 健身饮食记录助手 ...
- android高仿抖音、点餐界面、天气项目、自定义view指示、爬取美女图片等源码
Android精选源码 一个爬取美女图片的app Android高仿抖音 android一个可以上拉下滑的Ui效果 android用shape方式实现样式源码 一款Android上的新浪微博第三方轻量 ...
- Springboot+Redisson自定义注解一次解决重复提交问题(含源码)
前言 项目中经常会出现重复提交的问题,而接口幂等性也一直以来是做任何项目都要关注的疑难点,网上可以查到非常多的方案,我归纳了几点如下: 1).数据库层面,对责任字段设置唯一索引,这是最直接有效 ...
随机推荐
- Ant Design 使用小结
最近公司做了一个系统,因为页面涉及的表单交互非常多,如果使用之前的 Node + Express 的开发模式效率是非常低的,因此经过考虑,最后决定使用 Node + React 的开发模式,并且使用了 ...
- Activiti工作流引擎核心介绍
引言 Activiti 作为一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是基于 Java 的超快速.超稳定的 BPMN 2.0 流程引擎,强调流程服务的可嵌入性和可扩展性,同时更 ...
- vueJS 一天上手到精通
近来用vuejs, vuejs和angular的不同在于它直接暴露了一个构造函数,而后在里面写各种config, 和模板再相对,而且vuejs也有对应的模板双向绑定机制,这样就使开发非常简单容易,虽然 ...
- [bzoj2152]聪聪可可——点分治
Brief Descirption 给定一棵带权树,您需要统计路径长度为3的倍数的路径长度 Algorithm Analyse 点分治. 考察经过重心的路径.统计出所有deep,统计即可. Code ...
- bzoj 2039 最小割模型
比较明显的网络流最小割模型,对于这种模型我们需要先求获利的和,然后减去代价即可. 我们对于第i个人来说, 如果选他,会耗费A[I]的代价,那么(source,i,a[i])代表选他之后的代价,如果不选 ...
- mysql六:索引原理与慢查询优化
一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句 ...
- javascript写的轮播图
欢迎指点! 先放上效果图: 鼠标移入界面后: <body onselectstart="return false;" style="-moz-user-select ...
- [ 脚本 ] RHEL6.x 及Centos6.x 初始化脚本
#!/bin/bash # check network echo "-------------check Network-------------" ping -c -t mirr ...
- jquery插件需要明白的那些知识点
1.jquery中$是神马?$.fn又是神马? 稍微有jquery经验的都知道在jquery中$等价于jQuery,在控制台一试便知: 我们在jquery(1.8.3)源码中也能找到下面代码: 其实在 ...
- 基于tinkphp3.2获取openid
<?php namespace Home\Controller; use Think\Controller; /** * 基础 */ class BaseController extends C ...