Guía iOS: Capturar imágenes desde la cámara del iPhone
Actualizado : 21 octubre 2011 (iOS 5)
Continuando con la guía de desarrollo para iPhone e iPad en esta ocasión utilizaremos el controlador UIImagePickerController para acceder a las imágenes guardadas en el dispositivo o capturar imágenes desde un iPhone.
Arquitectura de Cocoa-Touch
Antes de entrar en detalle repasemos un poco la arquitectura utilizada por Cocoa-Touch (iOS SDK) para reconocer que elementos del framework podemos implementar según nuestras necesidades:
Esta arquitectura (Modelo-Vista-Controlador) separa los datos, interfaz de usuario y lógica de control en tres componentes como se aprecia en el gráfico. Para el caso del iOS SDK podemos ejemplificar la arquitectura de la siguiente manera : Core Data (Modelo), UIView (Vista), UIViewController (Controlador).
En esta guía utilizaremos el controlador UIImagePickerController el cual se encarga de gestionar la implementación de imágenes o video en una aplicación. Esta clase controla la interface de usuario y retorna el mensaje una vez terminada su utilización.
UIImagePickerController en acción
1. Crear un nuevo proyecto en Xcode de tipo “Single View Application”
2. Agregar los siguientes elementos en “ViewController.h”
#import <UIKit/UIKit.h> @interface ViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate> { UIImageView *imagenView; UIButton *abrirGaleria; UIButton *tomarFoto; } @property (nonatomic, retain) IBOutlet UIImageView *imagenView; @property (nonatomic, retain) IBOutlet UIButton *abrirGaleria; @property (nonatomic, retain) IBOutlet UIButton *tomarFoto; - (IBAction)abrirGaleria:(id)sender; - (IBAction)tomarFoto:(id)sender; @end
3. Abrir el archivo “ViewController.xib” y agregar 1 UIImageView y 2 UIButton
4. Desde el Connections Inspector enlazar los elementos creados en Xcode
5. Definir en Xcode las funciones declaradas previamente
#import "ViewController.h" @implementation ViewController @synthesize imagenView, abrirGaleria, tomarFoto; - (IBAction)abrirGaleria:(id)sender { // Inicia el Controlador UIImagePickerController * picker = [[UIImagePickerController alloc] init]; // Define el Delegate picker.delegate = self; // Establece el origen de la imagen picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; // Agrega la vista del controlador a la pantalla if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:picker]; [picker release]; [popover presentPopoverFromRect:CGRectMake(200, 940.0, 0.0, 0.0) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; } else [self presentModalViewController:picker animated:YES]; } - (IBAction)tomarFoto:(id)sender { UIImagePickerController * picker = [[UIImagePickerController alloc] init]; picker.delegate = self; picker.sourceType = UIImagePickerControllerSourceTypeCamera; [self presentModalViewController:picker animated:YES]; } // Recibe el mensaje cuando el controlador a finalizado - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { // Quita la vista del controlador [picker dismissModalViewControllerAnimated:YES]; // Establece la imagen tomada en el objeto UIImageView imagenView.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; } - (void)dealloc { [imagenView release]; [abrirGaleria release]; [tomarFoto release]; [super dealloc]; }
6. Compilar y ejecutar
Si esperas tomar fotos desde el iOS Simulator recibiras un sorprendente mensaje en la consola, cualquier inquietud en el proceso no dudes en comentarlo.
Repositorio en GitHub : MDW-GuiaiOS04-UIImagePickerController
Solo quería pasar por aquí para agradeceros estos geniales tutoriales que estáis sacando del iPhone y el iPad ya que en una o dos semanas debo ponerme a programar para ellos y me va a venir de lujo.
Un saludo
[…] La guía completa la puedes encontrar en nuestra fuente maestrosdelweb.com […]
Para aquellos que les interesa el futuro, les recomiendo dos libros que en Internet son gratuitos. Me refiero a:
EL SHOCK DEL SIGLO XXI
¿Por qué el mundo va hacia una crisis?
¿Como haremos para salir de ella?
LOS PRÓXIMOS 500 AÑOS
¿Cómo evolucionaran las casas, computadoras,
automóviles, industrias, y robots del futuro?
LOS CUALES PODRÁN LEER O BAJAR GRATUITAMENTE A SUS COMPUTADORAS DESDE:
http://WWW.FUTUROFUTURO.ES.TL
Me gustaria que me mandaran imágenes del Teléfono Modelo: A1214. A mi correo. Se les voy a agradecer, es que yo me voy comprar uno y quisiera conocerlo. Chao.