美文网首页Ios小Demo@IT·互联网程序员
华山论剑闲谈iOS中闪光灯的使用

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

作者: 神经骚栋 | 来源:发表于2016-08-07 00:31 被阅读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.

    ----> 🔦 Demo

    相关文章

      网友评论

      本文标题:华山论剑闲谈iOS中闪光灯的使用

      本文链接:https://www.haomeiwen.com/subject/bqflsttx.html