Captura de foto de perfil: ImagePicker y vista Sheet
Clase 33 de 36 • Curso de Desarrollo de Aplicaciones iOS con SwiftUI
Contenido del curso
- 4

Programando la primera pantalla en módulos
14:27 - 5

Escribiendo la lógica para mostrar dos pantallas
14:05 - 6

Pantalla de inicio de sesión con SecureField y Scroll
17:01 - 7

Completando nuestra pantalla de inicio de sesión
17:33 - 8

Pantalla de registro de usuario
17:42 - 9

Comprobando el funcionamiento de nuestras pantallas
05:31 - 10

Estructura de las pantallas con TabView
13:19 - 11

Creando nuestra pantalla home
14:04 - 12

Pantalla home: logo y barra de búsqueda
13:28 - 13

Pantalla home: programación de interfaces estáticas
15:50 - 14

Pantalla home: carruseles
13:23
¿Cómo capturar la imagen de perfil de un usuario en Swift?
En el desarrollo móvil, permitir que los usuarios elijan su foto de perfil es esencial para mejorar la experiencia del usuario y personalizar apps. Usando Swift y librerías de terceros, podemos integrar un Image Picker que permite seleccionar imágenes desde la galería o la cámara. Acompáñame a descubrir cómo lograrlo y aplicar estos conocimientos a tus proyectos móviles.
¿Qué librería usar para el Image Picker?
Swift UI, a diferencia de UIKit, aún no tiene integrada de manera nativa una vista para seleccionar imágenes. Para resolver esto utilizamos la librería SUImagePickerView, que permite al usuario escoger imágenes desde su librería o directamente desde la cámara.
- Descargar la librería: Accede al repositorio de SUImagePickerView y descarga el proyecto.
- Integrar en Xcode: Arrastra y suelta el archivo
SUImagePickerViewen tu carpeta devistas modeloen Xcode. Asegúrate de seleccionar la opción para copiarlo a tu proyecto. - Configurar el Image Picker: En la pantalla de edición de perfil, configúralo para mostrarse cuando se presione el botón asociado.
import SUImagePickerView
struct EditProfileView: View {
@State private var imagePerfil: Image? = Image("perfilEjemplo")
@State private var isCameraActive: Bool = false
var body: some View {
VStack {
imagePerfil?
.resizable()
.frame(width: 100, height: 100)
.clipShape(Circle())
.onTapGesture { self.isCameraActive = true }
Sheet(isPresented: $isCameraActive) {
SUImagePickerView(sourceType: .photoLibrary, isPresented: $isCameraActive, image: $imagePerfil)
}
}
}
}
¿Cómo inicializar y controlar el Image Picker?
La imagen se inicializa usando un estado @State. Este funciona para crear una variable que sigue su modificación, lo necesario para actualizar el perfil cuando el usuario elige una nueva imagen.
-
Crear variables necesarias: Declara
imagePerfilpara guardar la imagen seleccionada yisCameraActivepara controlar si el selector de imágenes está activo. -
Mostrar el Image Picker: Implementa un modificador
Sheetsobre la imagen de perfil que activa SUImagePickerView al ser presionado. -
Usar en simulador vs dispositivo real: Mientras que
.photoLibraryfunciona en el simulador, para probar.cameraes necesario un dispositivo real.
¿Cómo solucionar errores comunes?
A menudo, trabajando con vistas compuestas o Sheets, podemos enfrentar errores de binding o inicialización. Aquí algunos consejos:
-
Verificadores con Self: Cuando accedes a una imagen dentro de una vista Sheet, asegúrate de utilizar
selfpara clarificar el contexto de la propiedad. -
Establecer valores iniciales correctos: Evita que la cámara se active por defecto; inicializa
isCameraActivecomo false para evitar comportamientos inesperados.
Con esta implementación, puedes ofrecer una funcionalidad esencial y moderna en las aplicaciones, permitiendo a los usuarios personalizar su experiencia con imágenes desde su galería o cámara. Sigue explorando y aplicando estos principios en tus desarrollos y no olvides practicar en tus proyectos. ¡El camino de aprendizaje está lleno de posibilidades!