打开手机手电筒

2018-12-01  本文已影响0人  温水煮青蛙a

import<AVFoundation/AVFoundation.h>//打开手电筒 需要框架

//按钮触发方法

-(void)flashlightButtonAction:(UIButton *)button
{
    NSLog(@"打开手电筒");
    Class captureDeviceClass = NSClassFromString(@"AVCaptureDevice");
    if(captureDeviceClass != nil) {
        AVCaptureDevice*device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
        if([device hasTorch]) { // 判断是否有闪光灯
            // 请求独占访问硬件设备
            [device lockForConfiguration:nil];
            if(!button.selected) {
                [device setTorchMode:AVCaptureTorchModeOn];//手电筒开
            }else{
                [device setTorchMode:AVCaptureTorchModeOff]; // 手电筒关
            }
            // 请求解除独占访问硬件设备
            [device unlockForConfiguration];
        }
    }
    button.selected = !button.selected;
}

// 上面用到了NSClassFromString(NSString*aClassName) 做一下记录
FOUNDATION_EXPORT Class _Nullable NSClassFromString(NSString *aClassName);
如果你要获取的类不存在,则会返回一个nil对象,程序不会崩溃,适用于进行你不确定类的初始化。

NSClassFromString应用

通过字符串拿到类对象 如果拿不到则是nil

有的时候做一些页面的po判断
//拿到AViewController这个类对象
Class tempVC = NSClassFromString(@"AViewController");
    for (UIViewController *controller in self.navigationController.viewControllers) {
//遍历中做判断  有tempVC时 pop返回
        if ([controller isKindOfClass:tempVC]) {
            [self.navigationController popToViewController:controller animated:YES];
            break;
        }
    }
上一篇 下一篇

猜你喜欢

热点阅读