黑夜中如果你有一盏灯,不妨试着去照亮别人前行的道路..

###前言


近来项目已经完结,手上没有太多的任务,就想看一点以前没看过的东西,其实闪光灯的使用并不是太常见,而且调用比较简单,但是也是iOS学习过程中不可或缺的一部分.我总结闪光灯总共有三个功能,一是调用相机的时候充当闪光灯的功能;而是手电筒的功能;三是提醒用户的功能.今天就调用系统的闪光灯做一个简单的手电筒.虽然系统已经自带了手电筒,但我们只是通过手电筒的功能实现,看看是如何调用的闪光灯.
系统自带的闪光灯

iOS手电筒功能实现


首先,我们需要导入AVFoundation..framework框架.如下图所示.
0AC16A72-DF16-4C0B-A5DD-9DDF70E50EDB.png
为了省时省力,我就直接在ViewController进行了功能的实现,代码如下.
#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>@interface ViewController ()@property (strong, nonatomic) IBOutlet UIImageView *flashImage;//手电筒背景@property(assign,nonatomic)BOOL isOpenFlashlight;//是否打开手电@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];self.isOpenFlashlight = NO;}- (IBAction)flashLightAction:(id)sender {self.isOpenFlashlight = ! self.isOpenFlashlight;if (self.isOpenFlashlight) {self.flashImage.image = [UIImage imageNamed:@"打开手电.png"];self.flashImage.contentMode = UIViewContentModeScaleAspectFill;[self openFlashlight];}else{self.flashImage.image = [UIImage imageNamed:@"关闭手电.png"];self.flashImage.contentMode = UIViewContentModeScaleAspectFill;[self closeFlashlight];}}#pragma mark --- 打开手电/关闭手电 ---
-(void)openFlashlight
{AVCaptureDevice * device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];if (device.torchMode == AVCaptureTorchModeOff) {[device lockForConfiguration:nil];[device setTorchMode:AVCaptureTorchModeOn];[device unlockForConfiguration];}
}-(void)closeFlashlight
{AVCaptureDevice * device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];if (device.torchMode == AVCaptureTorchModeOn) {[device lockForConfiguration:nil];[device setTorchMode:AVCaptureTorchModeOff];[device unlockForConfiguration];}}
@end复制代码

整体的功能核心代码就是最后的 -(void)openFlashlight 和 -(void)closeFlashlight 两个方法.首先找到闪光灯的设备,然后判断闪光灯的状态,然后做出对应的动作就可以了.因为模拟机上是没有摄像头的,所以测试的全过程均为在iPhone真机上测试.我们看一下真机上的效果图片.
关闭状态
打开状态
今天就说到这,喜欢这篇文章就点个赞吧,有任何疑问可以随意在评论区提出,谢谢大家.最后附上闪光手电筒的Demo.

# ----> ? Demo

华山论剑闲谈iOS中闪光灯的使用相关推荐

  1. 华山论剑之iOS中(数组,字典,SQLite,CoreData)的“增删改查“

    我们的生活态度就应该是 "不抱怨" ! 其实我想写这篇文章很久了,因为自己做的iOS开发 ,对数据这一块有这极高的要求.所以一些必须的存储数据的使用,我们都有必要熟悉用法.在以前我 ...

  2. iphone smtp服务器没有响应,电子邮件卡在iPhone或iPad上的发件箱?如何修复iOS中的未发送邮件 | MOS86...

    您曾经在iOS中发送电子邮件,只能将信息卡在iPhone,iPad或iPod touch的邮件应用发件箱中?你知道这是什么时候发生的,因为在iOS的Mail应用程序的底部,状态栏在iOS中显示1个未发 ...

  3. mui ios中form表单中点击输入框头部导航栏被推起及ios中form表单中同时存在日期选择及输入框时,日历选择页面错乱bug...

    一.ios header导航栏被推起解决方法 1 设置弹出软键盘时自动改变webview的高度 plus.webview.currentWebview().setStyle({ softinputMo ...

  4. iOS中UISearchBar(搜索框)使用总结

    2019独角兽企业重金招聘Python工程师标准>>> iOS中UISearchBar(搜索框)使用总结 初始化:UISearchBar继承于UIView,我们可以像创建View那样 ...

  5. iOS中几种数据持久化方案总结

    概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案: plist文件(属性列表) ...

  6. iOS中关于NSTimer使用知多少

    看到这个标题,你可能会想NSTimer不就是计时器吗,谁不会用,不就是一个能够定时的完成任务的东西吗? 我想说你知道NSTimer会retain你添加调用方法的对象吗?你知道NSTimer是要加到ru ...

  7. iOS中JS 与OC的交互(JavaScriptCore.framework)

    iOS中实现js与oc的交互,目前网上也有不少流行的开源解决方案: 如:react native 当然一些轻量级的任务使用系统提供的UIWebView 以及JavaScriptCore.framewo ...

  8. 在iOS中使用tableView

    为什么80%的码农都做不了架构师?>>>    UITableView是iOS中最常用的控件了,所以使用起来也很简单. ViewContoller.h 文件 (继承UITableVi ...

  9. 关于ios中编译ffmpeg0.9.2库

    很多朋友在问如何在ios中编译ffmpeg库,虽说网上的教程很多,但是大部分都说按其操作,最后编译总是不成功,正好我最近的项目要用到ffmpeg,所以就再次编译了,同时在这里记下,方便需要参考的朋友. ...

最新文章

  1. 百度副总裁马杰:实现元宇宙,技术要过三道坎
  2. P5801 [SEERC2019]Game on a Tree(ACM - ICPC 2019)(树的最大匹配)(完美匹配)
  3. 关于数据库优化1——关于count(1),count(*),和count(列名)的区别,和关于表中字段顺序的问题...
  4. DayDayUp之Job:牛客网—算法工程师—剑指offer之66道在线编程(解决思路及其代码)——41~66
  5. Eclipse导入项目常见问题----乱码问题03
  6. HuggingFace又出炼丹神器!稀疏矩阵运算进入平民化时代!
  7. http header 设置编码_【译】http.client
  8. Nacos,阿里开源,是真的香!!
  9. phpcmsV9子栏目调用其父栏目名称、URL、catid等信息 - 方法总结
  10. Android 5.0新特性
  11. java manager 如何使用_java - Android:如何使用AlarmManager
  12. hnu暑期CCF培训之多项式加法
  13. CSS样式(五)- CSS高级
  14. 微型计算机的输入 输出设备PPT,(微型计算机系统模型).ppt
  15. [渝粤教育] 中国地质大学 思想道德修养与法律基础 复习题
  16. UI自动化测试工具的设计
  17. Nginx自建CDN加速节点 实现DNS智能解析网站项目
  18. es6去除重复项_ES5 ES6中Array对象去除重复项的方法总结
  19. 阿里云服务器,解析二级域名
  20. scratch接球游戏 电子学会图形化编程scratch等级考试三级真题和答案解析2022年3月

热门文章

  1. 利用计算机设计产品,计算机在产品设计的应用论文
  2. HP笔记本电源灯亮不能开机 - 静电问题
  3. ARM模拟器-skyeye(天目)的安装和使用!
  4. RIDE中testcase的edit界面显示异常/空白
  5. linux概述及环境搭建
  6. SimulinkSTM32开发(一)开发环境搭建
  7. 编写python代码实现打开并登录网页、对网页进行点击、输入信息等操作
  8. 使用 Laragon 在 Windows 中快速搭建 Laravel 本地开发环境 (转)
  9. 被“淘宝”的章文嵩西邮之行
  10. VLDB 2010 论文写作和格式 format 投稿