2015-02-06 3 views
0

손전등 앱이 있습니다. 나는 플래시를 만들기 위해 이것을 사용 :손전등 중지

NSTimer * myTimer = [NSTimer scheduledTimerWithTimeInterval:0.05 
                target:self 
                selector:@selector(toggleFlashlight) 
                userInfo:nil 
                repeats:YES];` 
- (void)toggleFlashlight{ 


    Class captureDeviceClass = NSClassFromString(@"AVCaptureDevice"); 
    if (captureDeviceClass != nil) { 
     AVCaptureDevice *device = 
     [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 
     if ([device hasTorch] && [device hasFlash]){ 

      [device lockForConfiguration:nil]; 
      if (device.torchMode == AVCaptureTorchModeOff) { 
       [device setTorchMode:AVCaptureTorchModeOn]; 
       [device setFlashMode:AVCaptureFlashModeOn]; 
       //torchIsOn = YES; 
      } else { 
       [device setTorchMode:AVCaptureTorchModeOff]; 
       [device setFlashMode:AVCaptureFlashModeOff]; 
       // torchIsOn = NO; 
      } 

     [device unlockForConfiguration]; 
     } 
    }  
} 

하지만 난 내가 버튼을 누르면 중지하고 싶습니다. 내가 어떻게 할 수 있니? 그것은 플래시를 가지고 있지 않다면 빛을 멈추기 위해 노력하고 있습니다.

답변

0

당신이 (당신이 플래시가있는 경우를 제외하고 작품을 말한다) 메소드를 정지에, 예약 된 플래시 타이머를 취소 ... 그리고 토치 모드로 카메라를 설정

//stop timer 
[myTimer invalidate]; 

//unflash 
Class captureDeviceClass = NSClassFromString(@"AVCaptureDevice"); 
if (captureDeviceClass != nil) { 
    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 
    if ([device hasTorch] && [device hasFlash]){ 
     [device lockForConfiguration:nil]; 
     [device setTorchMode:AVCaptureTorchModeOff]; 
     [device setFlashMode:AVCaptureFlashModeOff]; 
    } 
    [device unlockForConfiguration]; 
}