1. SWIFT - iOS 10 Español: Acceso a la cámara y al álbum

Pablo Guardiola
10 Jul 201616:21

Summary

TLDREste capítulo ofrece una guía para utilizar la cámara de un dispositivo y guardar fotografías en la librería. Se introduce una vista de imagen y se anclan botones para activar la cámara y abrir la librería de fotos. Se discuten opciones de visualización de imágenes como 'aspect fill' para evitar deformación. Se crea una clase para manejar la vista de la cámara o la librería, y se verifica la disponibilidad de la cámara antes de su uso. Se presenta un 'image picker' con opciones para seleccionar y editar imágenes, y se implementan delegados para manejar la selección de fotografías y su asignación a una vista. El objetivo es permitir tomar fotografías, seleccionarlas de la librería y guardarlas sin duplicarlas, todo ello con la finalidad de integrar estas funcionalidades en una aplicación.

Takeaways

  • 📷 Aprender a utilizar la cámara del dispositivo para tomar fotos y guardarlas en la librería.
  • 🖼️ Introducir una ImageView para visualizar la foto, y anclarla en la pantalla de manera específica.
  • 🔽 Crear un botón para activar la cámara y otro para abrir la librería de fotos.
  • 🎨 Configurar las opciones de presentación de la imagen para evitar deformación o espacios en blanco.
  • 🔗 Asignar outlets y acciones a los botones para manejar la toma y selección de fotos.
  • 📱 Verificar la disponibilidad de la cámara antes de intentar utilizarla.
  • 👀 Seleccionar la cámara trasera para la toma de fotos.
  • 📸 Configurar el ImagePicker para permitir la edición de la imagen y definir la fuente de las imágenes.
  • 🔑 Implementar delegados para manejar la información de la foto seleccionada.
  • 📚 Guardar la foto tomada en la librería y evitar duplicar imágenes al seleccionarlas de la librería.

Q & A

  • ¿Qué se va a aprender en este capítulo del tutorial?

    -En este capítulo se va a aprender a usar la cámara del dispositivo para hacer fotos, guardarlas en la librería y seleccionar fotos de esa librería.

  • ¿Qué elementos se introducen en la interfaz para trabajar con la cámara y la librería de fotos?

    -Se introduce una imagen view para ver la foto, un botón para activar la cámara y otro para abrir la librería de fotos.

  • ¿Cuál es la opción de ImageView que intenta rellenar todo el espacio sin deformar ni dejar espacios por dentro?

    -La opción es 'aspect fill', que intenta rellenar todo el espacio sin que la foto sobresalga ni queden espacios por dentro.

  • ¿Qué opción de ImageView se utiliza para que la imagen no se deforme ni desborde, manteniendo su relación de aspecto original?

    -Se utiliza la opción 'aspect fit' para que la imagen se ajuste al espacio sin deformarse ni desbordarse, manteniendo su relación de aspecto.

  • ¿Cómo se llama la clase que se usa para manejar la vista de la cámara o la librería de fotos?

    -La clase se llama 'ImagePicker' y se utiliza para manejar la vista de la cámara o la librería de fotos.

  • ¿Es necesario verificar si hay una cámara disponible antes de usarla en la aplicación?

    -Sí, es necesario verificar si hay una cámara disponible para evitar excepciones y el cierre de la aplicación.

  • ¿Cómo se verifica si la cámara de detrás está disponible para su uso en la aplicación?

    -Se utiliza el método 'availableCameras' de 'ImagePickerController' para verificar si la cámara de detrás está disponible.

  • ¿Qué método de 'ImagePickerController' se usa para presentar la cámara o la librería de fotos al usuario?

    -El método 'present' se usa para mostrar la cámara o la librería de fotos al usuario.

  • ¿Qué delegado se establece para manejar la imagen seleccionada por el usuario?

    -Se establece un delegado llamado 'imagePickerController:didFinishPickingMediaWithInfo:' para manejar la imagen seleccionada.

  • ¿Cómo se evita que se dupliquen las fotos en la librería al seleccionar una desde ella?

    -Se verifica si el 'imagePickerController' es igual a 'UIImagePickerController' antes de guardar la foto para evitar duplicar las fotos en la librería.

  • ¿Cómo se asegura de que la vista con la cámara desaparezca correctamente después de tomar una foto?

    -Se utiliza el método 'dismiss' con el parámetro 'animated' establecido en 'true' para que la vista desaparezca de manera animada.

  • ¿Qué se debe hacer con la vista presentada después de tomar una foto para que no se guarde de manera duplicada en la librería?

    -Se debe llamar al método 'dismiss' para que la vista se cierre y se evite la duplicación de la foto en la librería.

Outlines

00:00

📷 Configuración de la cámara y librería de fotos

En este primer párrafo se describe cómo configurar una aplicación para utilizar la cámara del dispositivo y guardar las fotos en la librería. Se introduce un ImageView para mostrar la foto y se sugiere colocar un botón en la pantalla para activar la cámara y otro para abrir la librería de fotos. Se discuten diferentes opciones de ajuste de la imagen para evitar deformaciones o espacios en blanco, y se menciona el uso de 'aspect fit' para que la imagen se ajuste correctamente sin deformarse ni desbordarse. Finalmente, se habla sobre la necesidad de declarar un picker para manejar la vista de la cámara o la librería y se sugiere verificar la disponibilidad de la cámara antes de proceder.

05:05

📱 Selección de la cámara y configuración del selector de imágenes

Este párrafo se enfoca en la selección de la cámara de detrás del dispositivo para capturar imágenes y en la configuración del image picker para permitir la edición de la imagen después de ser seleccionada. Se detalla cómo utilizar el image picker controller y cómo establecer opciones para capturar solo fotos, en lugar de videos. También se menciona la importancia de presentar el picker de manera adecuada y de manejar la animación al salir de la vista. Se destaca la necesidad de implementar delegados para controlar el flujo de información una vez que la imagen es tomada o seleccionada.

10:06

🖼️ Gestión de imágenes seleccionadas y su asignación a la vista

En el tercer párrafo, se explica cómo manejar la imagen seleccionada por el usuario, ya sea de la cámara o de la librería. Se discute la implementación de un delegado que recibirá la información de la imagen seleccionada y cómo convertirla en un objeto de tipo UIImage para su uso posterior. Se menciona la necesidad de guardar la imagen en la librería y cómo evitar la duplicación de fotos al seleccionar una desde la librería. Se destaca la importancia de comprobar que el picker no es nulo antes de asignar la imagen a la vista y de manejar correctamente la transición de la vista después de tomar o seleccionar una foto.

15:06

🎉 Prueba de la aplicación y revisión de funcionalidades

El último párrafo resume el proceso de prueba de la aplicación en un dispositivo móvil real, en lugar de un simulador. Se muestra cómo tomar una foto con la cámara y cómo seleccionar una imagen de la librería, asegurándose de que ambas acciones funcionen correctamente y que las imágenes se guarden en la librería sin duplicarse. Se menciona la posibilidad de recibir alertas si no hay cámara o cámara trasera disponible y se sugiere cómo manejar estas situaciones. El párrafo concluye con un mensaje de esperanza de que la información haya sido útil y un saludo para el próximo capítulo.

Mindmap

Keywords

💡Cámara

La cámara es un dispositivo que permite capturar imágenes o videos. En el contexto del video, se refiere a la función de la cámara del dispositivo móvil que se usa para tomar fotografías. Se menciona la necesidad de verificar si hay una cámara disponible y si es la cámara trasera, la cual es la preferida para este caso.

💡Librería

La librería se refiere a la colección de imágenes o fotos almacenadas en el dispositivo. En el video, se discute cómo seleccionar fotos de la librería para usarlas en la aplicación, además de cómo evitar la duplicación de fotos al seleccionarlas.

💡ImageView

ImageView es un componente de la interfaz de usuario que se utiliza para mostrar imágenes. En el script, se introduce un ImageView para visualizar la foto tomada, y se discuten las opciones de alineación y tamaño para adaptar la imagen a la pantalla.

💡Botón

Un botón es un elemento de la interfaz de usuario que permite a los usuarios interactuar con la aplicación. En el video, se menciona la creación de dos botones, uno para activar la cámara y otro para abrir la librería de fotos.

💡Aspect Fit

Aspect Fit es una opción de ajuste de imágenes que mantiene la relación de aspecto original de la imagen sin deformarla. En el script, se elige esta opción para que la imagen quede dentro del ImageView sin desbordarse ni deformarse.

💡ImagePicker

ImagePicker es una clase o herramienta que se utiliza para seleccionar imágenes de la librería del dispositivo. En el video, se configura el ImagePicker para permitir la selección de imágenes y se establecen las opciones para su uso.

💡Delegados

Los delegados son una forma de comunicación entre objetos en programación, donde un objeto notifica a otro sobre eventos o acciones. En el script, se menciona el uso de delegados para controlar la selección de la imagen y su manejo posterior.

💡Outlets

Outlets son conexiones en la programación que enlazan elementos de la interfaz de usuario con el código. En el video, se asignan outlets a los botones y a la ImageView para interactuar con ellos a través del código.

💡Acciones

Las acciones son métodos o funciones que se ejecutan en respuesta a eventos del usuario, como tocar un botón. En el script, se asignan acciones a los botones para activar la cámara y abrir la librería de fotos.

💡Capturar

Capturar en este contexto significa tomar una foto o grabar un video con la cámara. El script detalla cómo se captura una imagen con la cámara del dispositivo y cómo se maneja esa imagen después de ser tomada.

💡Simulador

El simulador es una herramienta que permite probar aplicaciones en un entorno que imita el dispositivo real. En el video, se menciona que ciertas acciones, como la activación de la cámara, no se pueden simular y es necesario probar en un dispositivo real.

Highlights

Introducción de una ImageView para visualizar la foto.

Uso de un botón para activar la cámara y otro para abrir la librería de fotos.

Ajuste de la vista para mostrar la imagen sin deformar ni dejar espacios por dentro.

Selección de la opción 'aspect fit' para adaptar la imagen a la pantalla sin deformación.

Asignación de outlets y acciones a los tres botones para controlar la cámara y la librería.

Declaración de una clase para manejar la vista de la cámara o la librería.

Verificación de la disponibilidad de la cámara antes de su uso.

Selección de la cámara trasera para capturar imágenes.

Configuración del ImagePicker para permitir la edición de la imagen y especificar la fuente de la imagen.

Presentación del ImagePicker con opciones de animación y control de la selección de imágenes.

Implementación de delegados para controlar la selección de imágenes y su manejo posterior.

Uso del método 'imagePickerController' para recibir la información de la imagen seleccionada.

Asignación de la imagen seleccionada a una variable y su uso en la aplicación.

Guardado de la imagen en la librería del dispositivo y su visualización en la pantalla.

Eliminación manual de la vista del ImagePicker para evitar duplicación de imágenes.

Selección de imágenes de la librería y su asignación a una vista sin duplicar en el álbum.

Verificación de la disponibilidad de la cámara frontal y su uso en caso de no disponibilidad de la trasera.

Conclusión del proceso de captura y selección de imágenes para su uso en la aplicación.

Transcripts

play00:00

bienvenidos a este capítulo donde vamos

play00:02

a aprender a usar la cámara de nuestro

play00:04

dispositivo hacer fotos guardar en la

play00:06

librería y seleccionar fotos de esa

play00:08

librería para empezar vamos a introducir

play00:11

una imagen view donde veremos nuestra

play00:14

foto

play00:19

anclarla arriba izquierda derecha y creo

play00:21

que en una altura fija

play00:25

colocaremos

play00:27

un botón

play00:32

un botón para activar la cámara

play00:35

vamos a ponerle de nombre de título de

play00:38

hacer fotos por ejemplo

play00:40

y otro para abrir la librería

play00:51

vamos a darlo para que se vea todo bien

play01:00

una última cosa antes de pasar al código

play01:03

es que

play01:06

este y match view tiene unas opciones

play01:08

para mostrar la imagen que nosotros le

play01:10

asignamos

play01:12

por definitivamente tiene la opción es

play01:16

que el púgil decir va a intentar

play01:18

rellenar todo el espacio con la foto sin

play01:21

que sobresalga nada y sin que queden

play01:23

espacios por dentro por lo tanto si

play01:25

nuestra imagen es alargada cómo va a ser

play01:27

cuando hagamos la foto ya que nuestra

play01:30

pantalla de móvil es alargada lo que

play01:32

pasará es que la de formar a comprimir a

play01:34

la altura y no se verá la imagen

play01:36

correctamente

play01:38

otra opción que

play01:40

aspect field que es similar

play01:44

es decir intentar rellenar toda la

play01:46

imesevi sólo que no deforma nuestra foto

play01:50

por lo tanto si nuestra imagen es

play01:53

alargada imaginaros que era imágenes

play01:55

como la batalla de móvil que es así

play01:58

esta esta esta opción lo que va a hacer

play02:01

es rellenar toda la imagen es decir va a

play02:03

cubrir desde la parte derecha hasta la

play02:05

parte izquierda y cómo no va a deformar

play02:08

el aspecto ratio lo que va a hacer es

play02:10

sobrepasar

play02:12

es decir desbordar por arriba y por

play02:15

abajo lo que vamos a utilizar nosotros

play02:17

hay muchas más

play02:20

estas son las tres más importantes vamos

play02:22

a utilizar aspect fit que lo que hace es

play02:28

no de forma del asper gratis

play02:32

y hacer que la imagen entre dentro de

play02:35

nuestra inversión es decir que entre

play02:38

toda la imagen y si nuestra imagen es

play02:40

agrada pues lo que era es llegar hasta

play02:42

aquí arriba hasta aquí abajo y quedarse

play02:45

más o menos pues a esta altura

play02:47

para que la foto ni se deforma ni

play02:50

desborde

play02:54

vamos a asignar los outlets y la acción

play02:57

para estas dos

play03:00

para estos tres botones

play03:02

tenemos recibido control de aquí

play03:06

con el botón derecho

play03:08

outlet

play03:12

le damos el nombre de imagen por ejemplo

play03:14

vamos a asignarle

play03:17

la acción a hacer fotos

play03:20

gestión

play03:23

hacer foto activo

play03:33

las fotos lo mismo

play03:44

ya tenemos el lunes que nos hace falta

play03:46

para asignarle la imagen a este y

play03:49

matthew y las dos acciones de los dos

play03:51

botones vamos a cerrar de esta pantalla

play03:55

a ver sólo una pantalla en la del

play03:57

controlador

play03:59

y vamos a empezar

play04:02

declarando nuestro primer pique

play04:07

y no es más que una clase que va a

play04:09

manejar

play04:10

esa vista dónde sale la cámara o bien la

play04:13

librería

play04:16

y que controle

play04:23

ya tenemos nuestro image piquer

play04:26

vamos a decirle es que nos muestre la

play04:29

cámara cuando hacemos clic en hacer

play04:31

fotos

play04:35

lo primero que tenemos que saber es si

play04:36

hay una cámara disponible porque si no

play04:38

hay un arma disponible la pedimos

play04:40

seguramente

play04:41

nos lanzará una excepción y la

play04:44

aplicación

play04:47

y se cerrará

play04:52

si no es así

play04:54

controller

play04:59

available si hay disponible una cámara

play05:04

entonces pasamos al siguiente paso y

play05:07

también hay que ver que esa cámara ya es

play05:10

la de detrás por ejemplo porque nosotros

play05:12

queremos que

play05:14

queremos utilizar la cámara de detrás

play05:16

así que lo mismo

play05:19

utilizamos la imatge speaker controller

play05:23

y el método

play05:25

a la vuelta

play05:27

pero qué bien

play05:30

available capturen goles

play05:33

y ponemos si le damos al punto no salen

play05:36

las opciones que tiene este no

play05:38

así que podemos utilizar la de atrás la

play05:40

flor

play05:41

vamos a utilizar la de atrás en este

play05:42

caso

play05:47

que esto no se anule que haya algo donde

play05:50

haya una cámara de atrás

play05:53

ahora así que vamos a pasar a nuestro

play05:55

image picker qué es lo que hemos

play05:57

declarado arriba y vamos a aceptar

play05:59

algunas opciones por ejemplo que permita

play06:02

la edición de la imagen una vez es la

play06:04

seleccionamos todo esto va a ser en la

play06:06

vista que nos proporciona ese está

play06:08

operativo quiero decir que no que no me

play06:11

permita editarla

play06:16

hay que decirle qué tipo de

play06:19

de fuente de dónde va a venir la foto

play06:23

desde la cámara aquí después vamos a ver

play06:26

si bien es de la cámara de la foto libre

play06:28

fotos librería

play06:31

y ya que viene de la cámara vamos a

play06:33

decirle qué tipo de

play06:36

captura vamos a hacer si va a ser una

play06:38

foto o un vídeo etcétera de momento sólo

play06:41

vamos a ver la foto

play06:43

una vez tenemos el imac speaker

play06:46

configurado tenemos que presentarlo

play06:51

en sus tres esto cambia un poco nos

play06:53

presenta y controles en inglés presenta

play06:55

a secas pero va bien es lo mismo donde

play06:58

necesitas el biocontrol de que quiere

play07:00

presentar que es nuestra y me explique

play07:02

si va a estar animado le decimos que sí

play07:05

y complete como no queremos nada cuando

play07:08

esto acabe cuando esta acción acabe le

play07:11

vamos a pasar a nil

play07:13

y con este método veríamos ya

play07:18

en nuestra cámara de fotos salir

play07:22

como esto no se puede simular con el

play07:26

simulador lo que vamos a hacer es

play07:28

lanzarlo a mi móvil

play07:31

y con el quick time estoy mostrando la

play07:34

pantalla de mi móvil así que lo podemos

play07:36

ver

play07:44

tenemos aquí

play07:48

hago clic en hacer fotos y salen la

play07:51

cámara

play07:57

ahora lo que necesitamos es qué va a

play07:58

pasar con esa foto que hagamos es decir

play08:00

como veis aquí podemos dejar hacer la

play08:03

foto

play08:06

sólo que

play08:08

cuando le doy a usar fotos pues no le

play08:11

hemos dicho que hacer con esa foto

play08:16

qué va a hacer con esa foto pues va a

play08:18

llamar a un método pasándole esa foto

play08:21

para que nosotros la utilizamos donde

play08:22

queramos pero no hemos dicho dónde se

play08:25

hace método así que ahora aquí en mi

play08:28

caso para empezar hay que usar delegados

play08:32

peek

play08:34

controlar el gheit

play08:46

esto es solo una serie de métodos

play08:49

que se van a llamar que nos van a ayudar

play08:52

y hacer cosas de este tipo pero hay que

play08:55

indicarle a ella que está que este

play08:58

inmenso piquer

play09:01

va a responder

play09:04

a ese delegado

play09:06

porque a lo mejor tenemos varios varios

play09:09

elementos iguales y sólo queremos que

play09:10

sea uno el que responda a esos métodos

play09:13

por tanto una vez que ya hemos

play09:17

declarados los delegados cuando

play09:19

escribamos una nueva función ya no

play09:22

saldrán esos métodos que hay ahí dentro

play09:23

y que vamos a hacer nosotros es image

play09:30

controles

play09:34

es un método que ya ha definido

play09:36

apple donde nos van a pasar

play09:40

él piquer

play09:42

y la info de lo que hemos seleccionado

play09:45

ahí dentro estará la foto etcétera así

play09:49

que lo que vamos a hacer es

play09:52

declarar

play09:54

nuestra imagen

play10:01

selecciona deba ser igual

play10:05

con bases del tipo de imágenes

play10:08

y va a ser igual

play10:11

dentro de info tenemos

play10:17

la imagen que hemos seleccionado

play10:21

que hay que hacer un

play10:28

h

play10:31

y en el caso de que nos venga la imagen

play10:33

en s

play10:36

en este objeto

play10:37

que en este caso es un diccionario hemos

play10:40

hecho el cast porque es de tipo news y

play10:43

lo que nos llega y necesitamos

play10:46

y saber qué clase es específicamente y

play10:50

una vez tenemos la imagen que es de tipo

play10:51

wiki y match ya podemos asignar la a

play10:54

nuestra imagen

play10:57

la imagen tiene una propiedad que es

play10:59

vice

play11:02

y la ley

play11:04

asignamos la imagen seleccionada

play11:07

además yo cuando hago la fotografía

play11:10

quiero que

play11:12

la parte en la librería

play11:14

usando este método

play11:18

y más

play11:24

fotos algo donde hay que pasar de la

play11:27

imagen

play11:30

seleccionada

play11:32

ningún completo

play11:34

ningún selector porque nos hace falta

play11:37

un context info

play11:40

con esto ya podemos hacer fotos nos la

play11:43

coloca en nuestra web y además la guarda

play11:47

en la librería

play11:48

vamos a ver esto en el simulador

play11:56

te voy a hacer fotos

play11:58

a una foto y la uso

play12:10

no me está funcionando algo me ha dejado

play12:17

ha dejado algo importante y es que esa

play12:21

vista que hemos presentado aquí arriba

play12:25

tenemos que quitarla nosotros mismos lo

play12:28

tanto

play12:32

cogemos el speaker y

play12:36

llamamos a método disney o al animado

play12:40

y no queremos ninguna cosa que pase algo

play12:42

cuando cuando acaba de irse esa vista

play12:46

pues podéis ponerlo aquí como complete

play12:51

supongo que se habrá guardado

play12:54

la de antes

play12:59

hacer fotos

play13:01

una foto y la usamos entonces baja la

play13:04

imagen estamos usando la

play13:07

la foto que la hemos colocado donde

play13:08

queríamos

play13:10

si veis

play13:12

y sobran

play13:14

sobre espacio a los lados porque lo que

play13:16

está haciendo es meter la imagen sin

play13:18

deformar la y que se muestre toda la

play13:19

imagen como hemos seleccionado antes

play13:23

la imagen se ve correcto bien porque

play13:25

vamos a hacer ahora es mostrar

play13:28

o sea seleccionar una imagen de

play13:31

de la álbum como hemos visto aquí todo

play13:34

depende de donde quieras utilizar

play13:40

el color es bajo

play13:44

lo que hemos hecho aquí es decirle vale

play13:46

va a venir de la cámara por lo tanto si

play13:48

yo copio esto de aquí

play13:51

no serviría sólo que tengo que cambiar

play13:54

desde la cámara

play13:57

viene desde la foto libre lo que tenemos

play14:00

bueno

play14:01

no queremos editarlo

play14:03

esto de aquí ya no viene a cuento

play14:04

gobierno es tiene que ver con la cámara

play14:08

y aquí igual

play14:10

no hay cámara trasera porque estamos

play14:11

seleccionando desde la librería

play14:15

y en vez de camera quiero saber si photo

play14:19

librería está disponible por lo que

play14:21

pueda pasar

play14:25

esto

play14:27

y ya está

play14:30

pero hay un detalle más y es

play14:34

cuando seleccionamos una imagen de la

play14:36

librería también va a llamar a este

play14:38

método cuando nosotros digamos que

play14:40

queremos usar esa imagen por lo tanto va

play14:43

a venir aquí va a seleccionar va a

play14:47

la imagen se la va asignar a nuestra

play14:49

vista y la va a volver a guardar por

play14:52

tanto se va a duplicar y no queremos que

play14:53

eso pase así que cuando llegue aquí

play14:55

tiene que ver que el image piquer

play14:59

soul cetaip es igual a cábala

play15:03

para que la guarde así cuando

play15:05

seleccionemos una imagen de la librería

play15:07

esto no pasará y no nos duplicará las

play15:10

fotos en nuestro álbum cada vez que

play15:12

seleccionemos una vamos a ver

play15:16

el resultado final

play15:24

las fotos tenemos aquí en nuestra

play15:26

librería

play15:28

y se le asigna a

play15:32

una diferente para que se vea

play15:39

correctamente

play15:42

todo correcto como veis aquí no lo

play15:45

explicado pero es obvio que si no hay

play15:48

una si por ejemplo aquí si no hay cámara

play15:51

disponible pues en este else

play15:54

podéis mandar una alerta de

play15:57

nos cámaras igual que aquí si no hay

play15:59

cámara trasera un problema

play16:03

igual que la trasera se pueden usar la

play16:04

frontal no está bien explicado

play16:09

eso es todo ya podemos hacer fotos

play16:12

seleccionarlas de libería y guardarlas

play16:15

en nuestra foto libre espero que os haya

play16:18

sido útil y nos vemos en el próximo

play16:19

capítulo

Rate This

5.0 / 5 (0 votes)

Related Tags
Cámara MóvilFotos DigitalesLibrería de FotosAplicaciones MóvilesDiseño de UIInteracción de UsuarioProgramación de AppsTutorial de FotografíaControl de CámaraSelección de Imágenes
Do you need a summary in English?