手电筒是iphone的一个常用功能,最常用的操作就是turn on和turn off,下面我们来实现一个简单的手电筒操作程序:一个按钮来控制iphone手电筒的On和Off,并且按钮的text也做相应的改变。
首先,我们知道手电筒是依附于某个拍摄设备的,我们要想控制它,必须要获取拍摄设备的instance,然后做相应的操作,所以实现步骤如下:
1. 导入AVFoundation库(主要是利用拍摄设备)
2. 创建Media type为Video的设备实例(AVCaptureDevice)
3. 锁定设备请求更新设置(申请独有的硬件访问权限)
4. 修改手电筒的显示模式(on或者off)
5. 解除设置锁定(step3中的锁定和step5中的解锁是成对出现的,修改完成后必须解锁,要不然其他APP就不能对设备设置进行修改了)
下边上代码吧
~~~~~~~~~~~~~我是代码~~~~~~~~~~~~~~~~~~
// // ViewController.swift // LightControl // // Created by XuAlvin on 3/1/16. // Copyright © 2016年 XuAlvin. All rights reserved. // import UIKit //导入AVFoundation库来调用拍摄设备 import AVFoundation class ViewController: UIViewController { @IBOutlet weak var btnLightButton: UIButton! //创建Video设备 let device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo) //手电筒显示状态标识 var isLightOn = true override func viewDidLoad() { super.viewDidLoad() //添加button的style,这块可以不写 self.btnLightButton.layer.borderWidth=0.5; self.btnLightButton.layer.borderColor=UIColor.lightGrayColor().CGColor self.btnLightButton.layer.cornerRadius=15 self.btnLightButton.layer.masksToBounds=true self.btnLightButton.backgroundColor=UIColor(colorLiteralRed: 255, green: 255, blue: 255, alpha: 0.5) } //捕获点击按钮 @IBAction func lightControlButtonTouched(sender: UIButton) { if device==nil{ return } do{ //锁定设备以便进行手电筒状态修改 try device?.lockForConfiguration() if isLightOn{ //设置手电筒模式为亮灯(On) device?.torchMode = AVCaptureTorchMode.On isLightOn = false //改变按钮标题 self.btnLightButton.setTitle("Turn Off", forState: UIControlState.Normal) }else{ //设置手电筒模式为关灯(Off) device?.torchMode = AVCaptureTorchMode.Off isLightOn = true //改变按钮标题 self.btnLightButton.setTitle("Turn On", forState: UIControlState.Normal) } //解锁设备锁定以便其他APP做配置更新 device?.unlockForConfiguration() }catch{ return } } }
在AVCaputrueDevice这个类中还有个很多关于手电筒(Torch)的操作,大家可以通过官方文档学习~