¿Alguien sabe cómo habilitar el botón del álbum de fotos en el UIImagePickerController cuando está en el modo de cámara? ¿Te gusta cómo la aplicación de la cámara en el iPhone puede alternar entre captura de imagen y video y también tiene el botón para ver la biblioteca de fotos?Habilitación del botón de la biblioteca de fotos en el UIImagePickerController
Respuesta
Me temo que esto no se puede hacer de esa manera fácil (simplemente habilite o deshabilite alguna función mágica). Para algunos requisitos simples, puede usar cameraOverlayView y showsCameraControls para realizar la implementación.
Si desea cambiar entre el modo de foto/vídeo, creo que se puede comprobar esta demo: http://developer.apple.com/library/ios/#samplecode/AVCam/Introduction/Intro.html
Esto se puede hacer a través de las siguientes líneas:
- (void) navigationController: (UINavigationController *) navigationController willShowViewController: (UIViewController *) viewController animated: (BOOL) animated {
if (imagePickerController.sourceType == UIImagePickerControllerSourceTypePhotoLibrary) {
UIBarButtonItem* button = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(showCamera:)];
viewController.navigationItem.rightBarButtonItems = [NSArray arrayWithObject:button];
} else {
UIBarButtonItem* button = [[UIBarButtonItem alloc] initWithTitle:@"Library" style:UIBarButtonItemStylePlain target:self action:@selector(showLibrary:)];
viewController.navigationItem.leftBarButtonItems = [NSArray arrayWithObject:button];
viewController.navigationItem.title = @"Take Photo";
viewController.navigationController.navigationBarHidden = NO; // important
}
}
- (void) showCamera: (id) sender {
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
}
- (void) showLibrary: (id) sender {
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
}
Esto no cambiará el control de la cámara, sino que agregará una barra de navegación en la parte superior de la ventana de la cámara. Eso podría o no ser lo que quieres, pero no creo que sea lo que el OP tenía en mente. – DaGaMs
gran solución. Solo recuerde verificar si la fuente de la cámara está realmente disponible. Algo como: if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]) { self.picker.sourceType = UIImagePickerControllerSourceTypeCamera; } – EsbenB
Aquí es una aplicación de ejemplo y biblioteca muy simple que le permite obtener la foto de tomar o elegir de la biblioteca al igual que Facebook lo hace. https://github.com/fulldecent/FDTake
He hecho esto modificando la aplicación de ejemplo PhotoPicker de Apple. He eliminado todos los controles de la cámara y he añadido mi propio botón. Cuando se hace clic en él, UIImagePickerControllerSourceType se establece en UIImagePickerControllerSourceTypePhotoLibrary.
La parte difícil para mí fue "descartar" (podría ser técnicamente la palabra incorrecta) la Biblioteca de fotos después de que se eligió la imagen. Lo hice estableciendo el tipo de fuente de nuevo a UIImagePickerControllerSourceTypeCamera. Esto devuelve la vista de superposición de la cámara.
ViewController.h
#import <UIKit/UIKit.h>
#import <CoreGraphics/CoreGraphics.h>
#import <ImageIO/ImageIO.h>
@interface ViewController : UIViewController <UIImagePickerControllerDelegate> {
//
}
@property (nonatomic, strong) UIImagePickerController *imagePicker;
- (IBAction)uploadNewPhotoTapped:(id)sender;
@end
ViewController.m
#import "ViewController.h"
@interface ViewController()
@end
@implementation ViewController
//Other code
- (IBAction)uploadNewPhotoTapped:(id)sender {
UIImagePickerController *imagePickController=[[UIImagePickerController alloc]init];
//You can use isSourceTypeAvailable to check
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
imagePickController.sourceType=UIImagePickerControllerSourceTypeCamera;
imagePickController.showsCameraControls=YES;
// self.usingPopover = NO;
}
else if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {//Check PhotoLibrary available or not
imagePickController.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;
imagePickController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
}
else if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum]) //Check front Camera available or not
imagePickController.sourceType=UIImagePickerControllerSourceTypeSavedPhotosAlbum;
//else //!!!!!!!!!!!exception
imagePickController.delegate=self;
imagePickController.allowsEditing=NO;
[self presentModalViewController:imagePickController animated:YES];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *originalImage=[info objectForKey:UIImagePickerControllerOriginalImage];
//Do whatever with your image
NSData *data = UIImageJPEGRepresentation (
originalImage,
1.0
);
[self dismissModalViewControllerAnimated:YES];
}
// Other code
@end
Perdón por despertar a un zombi aquí, pero si todavía tienes tu código, ¡estaría realmente interesado! – bdv
Hola bdv. De hecho, desenterré mi código y lo publiqué en mi respuesta original. No recuerdo exactamente cómo lo hice, ya que no he trabajado en esta aplicación en 2 años, pero comencé con la aplicación PhotoPicker original de Apple. https://developer.apple.com/library/ios/samplecode/PhotoPicker/Introduction/Intro.html – ganime
versión Swift2 de código @epsilontik:
//mediaPicker is your UIImagePickerController
func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
if(mediaPicker.sourceType == UIImagePickerControllerSourceType.PhotoLibrary){
let button = UIBarButtonItem(title: "Take picture", style: UIBarButtonItemStyle.Plain, target: self, action: "showCamera")
viewController.navigationItem.rightBarButtonItem = button
}else{
let button = UIBarButtonItem(title: "Choose picture", style: UIBarButtonItemStyle.Plain, target: self, action: "choosePicture")
viewController.navigationItem.rightBarButtonItem = button
viewController.navigationController?.navigationBarHidden = false
viewController.navigationController?.navigationBar.translucent = true
}
}
func showCamera(){
mediaPicker.sourceType = UIImagePickerControllerSourceType.Camera
}
func choosePicture(){
mediaPicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
}
- 1. uiimagepickercontroller - obtenga el nombre de la imagen seleccionada de la biblioteca de fotos
- 2. ¿Eliminar una foto de la biblioteca de fotos del usuario?
- 3. Personalizar el botón Atrás para UIImagePickerController?
- 4. Guardar fotos en álbum personalizado en la biblioteca de fotos de iPhones
- 5. UIImagePickerController miniatura del video que se recupera de la biblioteca
- 6. Problemas con el botón de cancelar UIImagePickerController no funciona
- 7. Capturar fotos con resolución específica usando el UIImagePickerController
- 8. Mostrando fotos de NSDocumentDirectory
- 9. UIImagePickerController se bloquea en el desplazamiento rápido, más lento que la aplicación de fotos
- 10. ¿Cómo cambiar el color del botón en la barra de navegación UIImagePickerController?
- 11. Seleccionar múltiples imágenes de la biblioteca de fotos
- 12. Habilitación del registro en Spring
- 13. configurando el tamaño del marco de UIImagePickerController
- 14. Excepción de UIImagePickerController: "El tipo de fuente debe ser UIImagePickerControllerSourceTypeCamera"
- 15. ¿Cómo establecer la ubicación de la fotografía capturada utilizando UIImagePickerController?
- 16. UIImagePickerController multiple select
- 17. diferencias entre la cámara y UIImagePickerController AVCaptureSession en el iPhone
- 18. Seleccionar videos usando UIImagePickerController en 2G/3G
- 19. UIImagePickerController para la película de película Artículo
- 20. Cómo "simplificar" UIImagePickerController
- 21. ¿Alguna biblioteca de galería de fotos para Android?
- 22. Habilitación de NSButton con enlaces, según la selección de NSTableView
- 23. Mostrando UIImagePickerController en UIPopoverController con UINavigationController existente (la adición de botón de retroceso)
- 24. ¿Alguna buena biblioteca de navegación de fotos para Objective C?
- 25. iPhone - UIImagePickerController -> guardar la imagen en la carpeta de la aplicación
- 26. Habilitación de autocompletar en sbcl
- 27. Cambio de la barra de navegación Título de UIImagePickerController
- 28. imagen Paso de la UIImagePickerController
- 29. ¿Cómo usar UIImagePickerController en iPad?
- 30. UIImagePickerController atascado en la compresión de vídeo
ah ok. ¡¡Gracias!! – MBU