• 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)的操作,大家可以通过官方文档学习~

  • 相关阅读:
    CSS3 探索发现系列:一组梦幻般的 CSS3 动画按钮效果
    JS日历控件集合附效果图、源代码
    uml 类图聚合与组合
    统计 按年,月,季度
    Visual studio 2008快捷键大全 (转)
    SQL常用语句和函数(转)
    C#函数传参的out与ref的应用(转)
    Session.Abandon和Session.Clear有何不同 (转)
    .net C#:String.Format数字格式化输出 (转)
    〈转贴〉如何解决 Windows XP 中的硬件和软件驱动程序问题
  • 原文地址:https://www.cnblogs.com/AlwinXu/p/5096664.html
Copyright © 2020-2023  润新知