Swift控制手电筒操作(iOS)
手电筒是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)的操作,大家可以通过官方文档学习~
Swift控制手电筒操作(iOS)的更多相关文章
- swift 编写欢迎界面-- ios开发
转载自:http://blog.csdn.net/u014455765/article/details/49622947 现在很多iOS开发人员都从oc转向Swift, swift 也必将成为ios开 ...
- Selenium3 + Python3自动化测试系列三——控制浏览器操作
控制浏览器操作 控制浏览器窗口大小 在测试过程中,我们在打开浏览器后,根据需求可自定义调整浏览器的尺寸大小.WebDriver提供了set_window_size()方法来设置浏览器的大小. 如果页面 ...
- 归纳整理Linux下C语言常用的库函数----内存及字符串控制及操作
在没有IDE的时候,记住一些常用的库函数的函数名.参数.基本用法及注意事项是很有必要的. 参照Linux_C_HS.chm的目录,我大致将常用的函数分为一下几类: 1. 内存及字符串控制及操作 2. ...
- 035——VUE中表单控件处理之使用vue控制select操作文字栏目列表
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- selenium控制浏览器操作
selenium控制浏览器操作 控制浏览器有哪些操作? 控制页面大小 前进.后退 刷新 自动输入.提交 ........ 控制页面大小,实例: # -*- coding:utf-8 -*- from ...
- VFP控制Excel操作集
◆访问EXCEL:ExcelSheet = GetObject('','Excel.Sheet')返回结果为类,则成功.例:ExcelSheet = GetObject('','Excel.Sheet ...
- iOS开发——实用篇Swift篇&状态栏操作
状态栏操作 在Swift开发过程中,针对状态栏操作的过程有很多. 1.在ViewController中操作当前ViewController的状态栏 /** 隐藏状态栏 */ override func ...
- iOS - 使用WKWebView时OC调JS的user-select属性控制用户操作
// 页面加载完成之后调用 - (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigatio ...
- Swift - 使用HTML5进行iOS开发(将HTML5打包成iOS应用)
最近越来越流行使用HTML5进行跨平台应用开发,先不说运行效率如何.从人力成本来说,只要写一套html页面就可以打包发布到安卓和iOS等多个平台,确实会省下不少时间和人力(这个领导最喜欢了). 下面简 ...
随机推荐
- 09_Java面向对象_第9天(类、封装)_讲义
今日内容介绍 1.面向对象思想 2.类与对象的关系 3.局部变量和成员变量的关系 4.封装思想 5.private,this关键字 6.随机点名器 01面向对象和面向过程的思想 A: 面向过程与面向对 ...
- Head First Java & 继承
- iOS- Exception Type: 00000020:什么是看门狗机制
1.前言 前几天我们项目闪退之后遇到的一个Crash,之后逛了许多论坛,博客都没有找到满意的回复 在自己做了深入的研究之后,对iOS的看门狗机制有了一个基本的了解 而有很多奇怪的Cras ...
- DispatcherServlet的作用
DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好 ...
- 调整Linux的最大文件打开数
要调整一下Linux的最大文件打开数,否则squid在高负载时执行性能将会很低.另外,在Linux下面部署应用时,有时候会遇上 Socket/File:Can’t open so many files ...
- PHP 更改session存储方式为Redis
前言: 服务器默认的session存放方式是file.当客户端发送请求带有PHPSESSID时是顺序的去比对session存储文件,如果有5000个session文件,那就有可能需要比对4998次那么 ...
- [转帖] CentOS7 与 CentOS6的对比
来源网站: http://blog.51cto.com/fengery/1901349 centos6.x_centos7.x差异改进明细 感谢原作者 centos官方帮助文档:https://wik ...
- Python fullstack系列【2】Python数据类型
基本数据类型 学习一门编程语言通常都是先了解其不同的数据类型,以及每种数据类型对象所附带的方法,Python也不例外,本篇就详细介绍下这部分. Python基本数据类型总览: 1.Booleans(布 ...
- Boa服务器移植
Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右.作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求.但Boa支持CGI,能够为C ...
- 如何调换antd中Modal对话框确认按钮和取消按钮两个按钮的位置
今天有个工作是把所有的确认按钮放在取消按钮的左边,类似于下图这样的,公司用的时antd组件 但是antd组件的按钮时确认键放在右边的 可以采用下面的方式,将按钮调换过来: 对的,就是在modal里面的 ...