华山论剑闲谈iOS中闪光灯的使用


前言


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

华山论剑闲谈iOS中闪光灯的使用_第1张图片
系统自带的闪光灯


iOS手电筒功能实现


首先,我们需要导入AVFoundation..framework框架.如下图所示.

华山论剑闲谈iOS中闪光灯的使用_第2张图片
0AC16A72-DF16-4C0B-A5DD-9DDF70E50EDB.png

为了省时省力,我就直接在ViewController进行了功能的实现,代码如下.

#import "ViewController.h"
#import 

@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真机上测试.我们看一下真机上的效果图片.

关闭状态
华山论剑闲谈iOS中闪光灯的使用_第3张图片
打开状态
华山论剑闲谈iOS中闪光灯的使用_第4张图片

今天就说到这,喜欢这篇文章就点个赞吧,有任何疑问可以随意在评论区提出,谢谢大家.最后附上闪光手电筒的Demo.

----> Demo

你可能感兴趣的:(华山论剑闲谈iOS中闪光灯的使用)