Я могу включить фонарик с помощью одной кнопки и выключить его с помощью другого. Но я хочу сделать это только с одной кнопкой. Однако у меня нет рамки, которая позволяет мне использовать метод bool isSelected. Поэтому я совершенно не знаю, как объединить обе функции вместе одной кнопкой.
Вот код, который работает:
-(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];
}
}
}
Я использую это, чтобы выключить фонарик.
-(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];
}
}
}
Я не особо отношусь к тому, как это делается. Пока фонарик включается с первым краном и отключается на втором, мне все равно, о методе.
Однако я использую barbuttonitems, сделанные программно, поэтому, пожалуйста, не давайте мне методы IBAction. Я также был бы признателен, если бы предложенный метод был максимально простым, я думаю, что способ использования фонарика сейчас слишком сложный.