Introducción al curso

1

Construyamos una app para iOS

2

Introducción a la arquitectura MVVM

3

Planeando nuestra app

Creando las primeras pantallas de la app

4

Programando la primera pantalla en módulos

5

Escribiendo la lógica para mostrar dos pantallas

6

Pantalla de inicio de sesión con SecureField y Scroll

7

Completando nuestra pantalla de inicio de sesión

8

Pantalla de registro de usuario

9

Comprobando el funcionamiento de nuestras pantallas

10

Estructura de las pantallas con TabView

11

Creando nuestra pantalla home

12

Pantalla home: logo y barra de b√ļsqueda

13

Pantalla home: programación de interfaces estáticas

14

Pantalla home: carruseles

Aplicando arquitectura MVVM

15

Creando estructura para arquitectura MVVM

16

Modelando nuestro JSON

17

Peticiones al servidor

18

Mostrar información de un servidor de manera dinámica

19

Mostrar im√°genes de forma din√°mica y eficiente con LazyVGrid

Reproductor y b√ļsqueda de video

20

Pasar datos entre pantallas

21

Darle datos de inicio a un Canvas

22

Reproducir videos din√°micamente de un servidor

23

Mostrar im√°genes din√°micamente de un servidor

24

Mostrar alertas

25

Programar clase de b√ļsqueda

26

Programar m√©todo de b√ļsqueda

√öltimas pantallas de la app

27

Pantalla de favoritos

28

Pantalla de perfil de usuario

29

Módulo de ajustes de perfil con Toggle

30

Pantalla de edición de perfil

31

Módulo de edición de perfil

32

Guardado interno de datos

Utilizando la c√°mara y fotos del iPhone

33

Captura de foto de perfil: ImagePicker y vista Sheet

34

Captura de foto de perfil con la cámara: modificar librerías de terceros

35

Captura de foto de perfil con la c√°mara: recuperar im√°genes guardadas

¬ŅQu√© m√°s posibilidades tiene SwiftUI?

36

Mejoremos nuestra app

No tienes acceso a esta clase

¬°Contin√ļa aprendiendo! √önete y comienza a potenciar tu carrera

Pantalla de registro de usuario

8/36
Recursos

Aportes 12

Preguntas 1

Ordenar por:

¬ŅQuieres ver m√°s aportes, preguntas y respuestas de la comunidad?

Me resultó mejor crear un componente para los inputs.

struct InputForm: View {
    @Binding var textBinding: String
    
    var label: String
    var placeholder: String
    var isSecureTextField: Bool = false
    var bottomSpace: CGFloat?
    
    var body: some View {
        VStack(alignment: .leading) {
            Text(label)
                .foregroundColor(Color("darkCian"))
                .fontWeight(.bold)
            
            ZStack(alignment: .leading) {
                if textBinding.isEmpty {
                    Text(placeholder)
                        .font(.caption)
                        .foregroundColor(Color("lightGray"))
                }
                
                if isSecureTextField {
                    SecureField("", text: $textBinding)
                        .font(.body)
                        .foregroundColor(.white)
                
                } else {
                    TextField("", text: $textBinding)
                        .font(.body)
                        .foregroundColor(.white)
                }
            }
            
            if let bottomSpace = self.bottomSpace {
                Divider()
                    .frame(height: 1)
                    .background(Color("darkCian"))
                    .padding(.bottom, bottomSpace)
            
            } else {
                Divider()
                    .frame(height: 1)
                    .background(Color("darkCian"))
                    .padding(.bottom)
            }
        }
    }
}

No olviden agregar color blanco con foreground a los Text de los input de Correo y Contrase√Īas en ambas vistas.

Me refiero a los Text que contienen el binding $correo, $contrase√Īa y $confirmarContrase√Īa ya que por defecto el sistema lo pone en negro cuando escribimos.

Excellent, this is my first view:

de verdad no me parece buena practica solo tener una imagen del dise√Īo y imaginar las distancias y los tama√Īos de los objetos deber√≠an seguir el figma en cuanto a paddings y distancia de los objetos, incluso el figma les puede dar un ejemplo del objeto en c√≥digo SwiftUI, si ya tienes las herramientas usalas no las ignores.

Ahi vamos de apoco. ![](

Todo bien pero aqui hace falta demasiada reutilizazion de views, se esta repitiendo demasiado codigo, deberian ense√Īar a programar bien desde 0, por lo menos esta parte no me esta gustando, los fields contrase√Īa deberian ser reutilizados y correo deberian ser reutilizados, aqui estamos repitiendo el mismo codigo mas de 5 veces es una barbaridad
jeje ![](https://static.platzi.com/media/user_upload/image-9abeb0f3-2f76-4549-ae54-a470547f9a99.jpg)

Le agregue la funcionalidad de asignar una foto de perfil random, a cada User que se esta registrando:

Viendo las clases, veo el avance de los procesadores M de Apple sobre los Intel, mi Mac recopila m√°s r√°pido que la de el profe jaja y me imagino que el debe de tener la que en su a√Īo era una de las m√°s top jaja

En el reto anterior lo hice de la siguiente manera:

Text("Enter with social networks").foregroundColor(.white).frame(maxWidth: .infinity, alignment: .center).padding(.vertical).font(.footnote)
                
                HStack {
                    Button(action: signInFacebook, label: {
                        Text("Facebook").fontWeight(.bold).foregroundColor(.white).frame(maxWidth: .infinity, alignment: .center).padding(EdgeInsets(top: 11, leading: 18, bottom: 11, trailing: 18)).background(RoundedRectangle(cornerRadius: 6).fill(Color("BlueGray")))
                    })
                    
                    Button(action: signInTwitter, label: {
                        Text("Twitter").fontWeight(.bold).foregroundColor(.white).frame(maxWidth: .infinity, alignment: .center).padding(EdgeInsets(top: 11, leading: 18, bottom: 11, trailing: 18)).background(RoundedRectangle(cornerRadius: 6).fill(Color("BlueGray")))
                    })

                }