zoukankan      html  css  js  c++  java
  • 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)的操作,大家可以通过官方文档学习~

  • 相关阅读:
    memmove、memccpy和memcpy
    NSLocalizedString不起作用
    sign starfieldtech
    微软推荐的Get a code signing certificate流程和链接
    Driver Signing changes in Windows 10
    delphi 打开文件夹并定位到一个文件(关键是/select参数)
    key转成pvf
    nginx+apache+mysql+php+memcache+squid搭建集群web环境
    dddd
    Delphi系统变量:IsMultiThread对MM的影响
  • 原文地址:https://www.cnblogs.com/AlwinXu/p/5096664.html
Copyright © 2011-2022 走看看