iOS 開發(fā) 用代碼打開手電筒

iOS 開發(fā) 用代碼打開手電筒

分類:iOS

最近項目中有掃描二維碼的功能,我想添加一個打開手電筒的操作,實現(xiàn)過程如下:

在項目中導(dǎo)入?AVFoundation.framework 依賴庫,在實現(xiàn)類中導(dǎo)入頭文件

#import

實現(xiàn)代碼如下:

#pragma mark - event response

//打開手電筒開關(guān)按鈕點擊事件

- (void)torchOnTouchButton:(UIButton*)sender{

? ? ? ? ?Class captureDeviceClass =NSClassFromString(@"AVCaptureDevice");

? ? ? ? ?if(captureDeviceClass !=nil) {

? ? ? ? ? ? ? ? ? AVCaptureDevice*device = [AVCaptureDevicedefaultDeviceWithMediaType:AVMediaTypeVideo];

? ? ? ? ? ? ? ? ? if([devicehasTorch]) { // 判斷是否有閃光燈

? ? ? ? ? ? ? ? ? ? ? ? ? ? // 請求獨占訪問硬件設(shè)備

? ? ? ? ? ? ? ? ? ? ? ? ? ?[devicelockForConfiguration:nil];

? ? ? ? ? ? ? ? ? ? ? ? ? ?if(sender.tag==0) {

? ? ? ? ? ? ? ? ? ? ? ? ? ?sender.tag=1;

? ? ? ? ? ? ? ? ? ? ? ? ? ?[devicesetTorchMode:AVCaptureTorchModeOn];//手電筒開

? ? ? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? ? ? ? ? ? ? sender.tag=0;

? ? ? ? ? ? ? ? ? ? ? ? ? ? [devicesetTorchMode:AVCaptureTorchModeOff]; // 手電筒關(guān)

? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ?// 請求解除獨占訪問硬件設(shè)備

? ? ? ? ? ? ? ? ?[deviceunlockForConfiguration];

? ? ? ? ? ? ? ? ?}

? ? ? ? ? }

}

// 上面用到了NSClassFromString(NSString*aClassName)解釋一下:

FOUNDATION_EXPORTClass__nullableNSClassFromString(NSString*aClassName); 這是Xcode上的源碼

如果你要獲取的類不存在,則會返回一個nil對象,程序不會崩潰,適用于進(jìn)行你不確定類的初始化。

NSClassFromString的好處是:

1.弱化鏈接,不會把沒有的框架也鏈接到程序中。

2.不需要使用import,因為類是動態(tài)加載的,只要存在就可以加載。因此如果你的類中沒有某個頭文件定義,而你確信這個類是可以用的,那么可以用這個方法。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容