¿Alguien sabe cómo habilitar el botón de álbum de fotos en el UIImagePickerController cuando se encuentra en el modo de la cámara? Como la aplicación de la cámara en el iphone se puede alternar entre la imagen y el vídeo, y también tiene el botón para ver la foto de la biblioteca?

InformationsquelleAutor MBU | 2011-12-16

5 Comentarios

  1. 14

    Esto puede ser realizado 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, pero en lugar de añadir un navigationBar en la parte superior de la ventana de la cámara. Que podría o no ser lo que quieres, pero yo no creo que sea lo que el OP tenía en mente.
    • gran solución. Sólo recuerde para comprobar si la cámara de origen es realmente disponible. Algo así como: si ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypecamera]) { self.selector.sourceType = UIImagePickerControllerSourceTypecamera; }
  2. 1

    He hecho este retorcimiento de Apple PhotoPicker aplicación de ejemplo. He quitado todos los controles de la cámara y añadido mi propio botón. Cuando se hace clic, UIImagePickerControllerSourceType se establece en el UIImagePickerControllerSourceTypephotolibrary.

    La parte difícil para mí fue «despedir» (podría ser técnicamente la palabra equivocada) la Biblioteca de Fotos después de que la imagen fue tomada. Hice esto por establecer el tipo de fuente de vuelta a UIImagePickerControllerSourceTypecamera. Esto nos lleva de regreso a la cámara de superposición de vista.

    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
    • Lo siento despierto un zombie aquí, pero si usted todavía tiene su código, yo estaría muy interesado!
    • Hola bdv. De hecho, me excavado hasta mi código y lo puso a mi respuesta original. No recuerdo exactamente cómo lo hice yo como no he trabajado en esta aplicación en 2 años, pero empecé con Apple original PhotoPicker de la Aplicación. developer.apple.com/library/ios/samplecode/PhotoPicker/…
  3. 1

    Swift2 versión de @epsilontik código:

        //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
    }

Dejar respuesta

Please enter your comment!
Please enter your name here