iOS : Ejercicio 14. Acceso a la cámara y galería de fotos del iPhone

Blog >Lista ejercicios >  Ejercicio 14


Buenas desarrolladores, en este post vamos a ver como usar la cámara del dispositivo y cómo acceder a la librería.




Ejercicio 14 : Cámara y libreria iphone

Abrimos proyecto de la forma habitual
 

Bien, vamos ahora al storyboard, ahí arrastramos un UIImageView, un ToolBar y un Bar Button Item, para gestionar lo que queremos hacer. Para cambiar el iconito del botón Bar Button Item, vamos al inspector de objetos a la cuarta pestañita, y en identifier : Camera. 






Arrastramos una conexión al archivo .h de ese botón y otra de la imagen.Para poder crear un pequeño menu con las opciones, hacemos que herede de UIActionSheetDelegate

@interface ViewController : UIViewController 
//Conexión imagen 
@property (weak, nonatomic) IBOutlet UIImageView *imagen;
//Conexión PulsarBoton
- (IBAction)PulsarBotonCamara:(id)sender;
@end


Ahora en el .m, ha aparecido la función por la que siempre pasa al hacer el click, aplicamos un pequeño menú con opciones para que aparezca cada vez que se pulse el botón :

- (IBAction)PulsarBotonCamara:(id)sender {
    //Creamos menú para acceder a la cámara o a la galería
    UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"Selecciona acción" delegate:self cancelButtonTitle:@"Cancelar" destructiveButtonTitle:nil otherButtonTitles:@"Librería", @"Cámara", nil];
    [sheet showInView:self.view];
}


Ejecutamos el proyecto, para ver si aparece el minimenú :




Bien, ahora implementamos esta función : clickedButtonAtIndex , para saber que boton se ha pulsado del sheet, además de añadir 2 funciones.Cada una de las funciones iniciará la cámara y la otra la librería.


//PARA SABER EL BOTON QUE SE HA PULSADO EN EL SHEET

-(void)iniciarLibreria{
}
-(void)iniciarCamara{

}
-(void) actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
       if(buttonIndex==0){
           [self iniciarCamara];
        }else if (buttonIndex==1){
           [self iniciarCamara];
    }
}


Bien, ahora para iniciar la camara o la galería vamos a tocar el .h para que herede de estas clases más, y así podremos acceder mediante varias funciones a varios eventos que ocurren a la hora de sacar la foto o al cancelar.

 @interface ViewController : UIViewController 
 
@property (weak, nonatomic) IBOutlet UIImageView *imagen;
- (IBAction)PulsarBotonCamara:(id)sender;

@end


Estas son las dos funciones anteriores, cada una para abrir la cámara o la librería.

-(void)iniciarLibreria{
    UIImagePickerController *pickerController = [[UIImagePickerController alloc] init];
    [pickerController setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
    [self presentModalViewController:pickerController animated:YES];
}

-(void)iniciarCamara{
    //Objeto para acceder a la camara, en este calo la galería de fotos que sale por defecto
    UIImagePickerController *pickerController = [[UIImagePickerController alloc] init];
    //Identifica si esta disponible la cámara
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
        //Seleccione tipo de cámara
        [pickerController setSourceType:UIImagePickerControllerSourceTypeCamera];
    }else{
        NSLog(@"No hay cámara disponible");
    }
    //HACEMOS QUE SEA DELEGADO
    [pickerController setDelegate:self];
    [self presentModalViewController:pickerController animated:YES];
}
Si todo está bien echo, el dispositivo podrá acceder a cámara y la galería, para complementarlo ponemos también unas funciones :
//FUNCION QUE SE EJECUTA CUANDO SELECCIONAMOS QUE QUEREMOS USAR LA FOTO
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
    //Cogemos la foto
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    //La asignamos al ImageView del ViewController
    [self.imagen setImage:image];
    [self dismissModalViewControllerAnimated:YES];
}
//FUNCION QUE SE EJECUTA AL PULSAR CANCELAR EN CUANTO SE ACCEDE A LA CAMARA
- (void) imagePickerControllerDidCancel:(UIImagePickerController *)picker{
    NSLog(@"Se ha cancelado el picker.");
    //para que vuelva a la vista anterior
    [self dismissModalViewControllerAnimated:YES];
}
@end
Pues ya está facilito para que cada uno investigue ya más en profundidad depende de lo que le interese. Salu2!!



Compartir Compartir Compartir Compartir




Thebestandroide Indice Thebestandroide Ejercicio anterior Thebestandroide Siguiente ejercicio

0 comentarios:

Publicar un comentario