我写这对于用相机,类似于苹果AVCam拍照定制的视图的应用程序。 在这里面,我想打一个按钮消失,每次打开相机时都将重新出现闪光图标。 IE浏览器在使用前置摄像头,闪光灯按钮不能使用回它应该在那里和!
我给这家目前的代码是:
AVCaptureDevicePosition position = [[videoInput device] position];
if (position == AVCaptureDevicePositionBack) {
self.flashButton.hidden == YES;
}
但它在videoInput的错误出现,我不知道为什么...任何文档,你可以指点我或想法在我的代码更改,将不胜感激!
编辑
基本上只是具体为什么它想出的“使用未声明的标识符的”与此代码错误:
AVCaptureDevicePosition position = [[videoInput device] position];
下面的代码可以帮助你:
AVCaptureDeviceInput *newVideoInput;
AVCaptureDevicePosition currentCameraPosition = [[videoInput device] position];
if (currentCameraPosition == AVCaptureDevicePositionBack)
{
currentCameraPosition = AVCaptureDevicePositionFront;
}
else
{
currentCameraPosition = AVCaptureDevicePositionBack;
}
AVCaptureDevice *backFacingCamera = nil;
NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
for (AVCaptureDevice *device in devices)
{
if ([device position] == currentCameraPosition)
{
backFacingCamera = device;
}
}
newVideoInput = [[AVCaptureDeviceInput alloc] initWithDevice:backFacingCamera error:&error];
我一直在寻找类似的问题的解决方案,并与该过来了,它可能会为你(只在iOS8上的测试,并写在斯威夫特)工作:
var captureDevice : AVCaptureDevice?
...
var currentDevice:String = captureDevice?.localizedName as String!
if currentDevice.rangeOfString("Back Camera") != nil {
//hide flash icon
} else if currentDevice.rangeOfString("Front Camera") != nil {
//show flash icon
}
此代码假定你已经安装了摄像头正常
注意:这可能不是最好的办法,因为如果苹果决定改变localizedName这将打破。 而且,我知道这个问题是一个古老,但它可能会帮助别人谁在它绊倒