Barra inferior opaca UIImagePickerController

Necesito mi vista para tener una parte inferior negra opaca y una barra superior al tomar una foto. Quiero que se vea exactamente así:

View post on imgur.com

Esto es en realidad lo que tengo ejecutando mi código en mi iPhone 5 con iOS 7. Pero cuando compilé mi código en un iPhone 4S (iOS 7 también), la barra inferior se vuelve transparente: la vista se convierte en una camera de arriba a abajo, como la aplicación de la camera ahora Incluso el button "Tomar image" se vuelve transparente, como SnapChat. Odio esto. ¿Cuál es la configuration que necesito cambiar para que la barra inferior se vuelva opaca en mi iPhone 4S? Estoy usando autolayout

Esto es en mi vista. DidAppear:

if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { self.anImagePickerController = [UIImagePickerController new]; self.anImagePickerController.delegate = self; self.anImagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera; self.anImagePickerController.showsCameraControls = YES; [self presentViewController:self.anImagePickerController animated:NO completion:Nil]; } 

El código a continuación hará exactamente lo que desea. Descubrí esto yo mismo, ya que quería hacer exactamente lo mismo que tú, y siento que rodar tu propio controller de camera es completamente innecesario.

 UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; imagePicker.allowsEditing = YES; imagePicker.cameraFlashMode = UIImagePickerControllerCameraFlashModeAuto; imagePicker.delegate = self; [self presentViewController:imagePicker animated:YES completion:^() { for (UIView *subview in imagePicker.view.subviews) { if([NSStringFromClass([subview class]) isEqualToString:@"UINavigationTransitionView"]) { UIView *theView = (UIView *)subview; for (UIView *subview in theView.subviews) { if([NSStringFromClass([subview class]) isEqualToString:@"UIViewControllerWrapperView"]) { UIView *theView = (UIView *)subview; for (UIView *subview in theView.subviews) { if([NSStringFromClass([subview class]) isEqualToString:@"PLCameraView"]) { UIView *theView = (UIView *)subview; for (UIView *subview in theView.subviews) { if([NSStringFromClass([subview class]) isEqualToString:@"CAMTopBar"]) { subview.backgroundColor = [UIColor blackColor]; } if([NSStringFromClass([subview class]) isEqualToString:@"CAMBottomBar"]) { subview.backgroundColor = [UIColor blackColor]; } if([NSStringFromClass([subview class]) isEqualToString:@"PLCropOverlay"]) { UIView *theView = (UIView *)subview; for (UIView *subview in theView.subviews) { if([NSStringFromClass([subview class]) isEqualToString:@"PLCropOverlayBottomBar"]) { UIView *theView = (UIView *)subview; for (UIView *subview in theView.subviews) { if([NSStringFromClass([subview class]) isEqualToString:@"PLCropOverlayPreviewBottomBar"]) { subview.backgroundColor = [UIColor blackColor]; } } } } } } } } } } } } }]; 

No creo que puedas modificar el comportamiento de UIImagePickerController . Es probable que elimine la barra negra debido a que no hay suficiente espacio en la pantalla en los dispositivos de pantalla más pequeños. Si insiste en este comportamiento, debe ir al método de superposition personalizado. Establece showsCameraControls en NO , y proporciona una vista de cameraOverlayView que se comportará según lo necesite. Desde su vista de superposition personalizada, cuando el usuario toca el button para tomar una fotografía, llama a takePicture en el controller del selector de imágenes.

Puede ver una implementación de ejemplo de una vista de superposition en los ejemplos de Apple: https://developer.apple.com/library/ios/samplecode/PhotoPicker/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010196

UIImagePickerController es un UINavigationController. La barra de la que te estás quejando es la toolbar de toolbar UINavigationController. Como seguramente sabes, una barra de herramientas es transparente (o al less translúcida) de forma pnetworkingeterminada en iOS 7.