I can turn my flashlight on with one button and turn it off with another. But I want to do it with only one button. However, I don't have a framework which allows me to use the bool isSelected method. So I'm quite clueless on how to merge both functions together in one button.
Here's the code which works:
-(void)onButtonPressed
{
AVCaptureDevice *flashLight = [AVCaptureDevice
defaultDeviceWithMediaType:AVMediaTypeVideo];
if([flashLight isTorchAvailable] && [flashLight
isTorchModeSupported:AVCaptureTorchModeOn])
{
BOOL success = [flashLight lockForConfiguration:nil];
if(success){
[flashLight setTorchMode:AVCaptureTorchModeOn];
[flashLight unlockForConfiguration];
}
}
}
I use this to turn the flashlight off.
-(void)offButtonPressed {
AVCaptureDevice *flashLight = [AVCaptureDevice
defaultDeviceWithMediaType:AVMediaTypeVideo];
if([flashLight isTorchAvailable] && [flashLight
isTorchModeSupported:AVCaptureTorchModeOn])
{
BOOL success = [flashLight lockForConfiguration:nil];
if(success){
[flashLight setTorchMode:AVCaptureTorchModeOff];
[flashLight unlockForConfiguration];
}
}
}
I'm not particular about the way it's done. As long as the flashlight turns on with the first tap and turns off on the second, I couldn't care less about the method.
However, I'm using barbuttonitems made programatically, so please don't give me IBAction methods. I'd also appreciate it if the method suggested is as simple as possible, I think the way I'm using the flashlight right now is overly complex.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…