1 つのボタンで懐中電灯をオンにし、別のボタンでオフにすることができます。でもボタン一つでやりたい。ただし、bool isSelected メソッドを使用できるフレームワークがありません。そのため、両方の機能を 1 つのボタンに統合する方法についてはまったくわかりません。
動作するコードは次のとおりです。
-(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];
}
}
}
作り方にこだわりはありません。懐中電灯が最初のタップで点灯し、2 回目のタップで消灯する限り、その方法はあまり気にしませんでした。
ただし、プログラムで作成した barbuttonitems を使用しているため、IBAction メソッドを提供しないでください。また、提案された方法ができるだけ単純であればありがたいのですが、現在懐中電灯を使用している方法は複雑すぎると思います。