华山论剑闲谈iOS中闪光灯的使用
2016-08-07 本文已影响678人
神经骚栋
前言
近来项目已经完结,手上没有太多的任务,就想看一点以前没看过的东西,其实闪光灯的使用并不是太常见,而且调用比较简单,但是也是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.