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

Clase 18 de 36Curso de Desarrollo de Aplicaciones iOS con SwiftUI

Resumen

¿Cómo configurar las variables para visualizar los datos de un videojuego?

Para lograr una visualización adecuada de los datos de un videojuego en tu aplicación, necesitas comenzar configurando distintas variables que puedan captar la información deseada. Estas variables básicamente contienen:

  • URL de tipo String, inicializada como vacía.
  • Título del juego, también de tipo String y vacía.
  • Estudio desarrollador del juego.
  • Calificación del juego y año de publicación.
  • Una matriz de tags, que es un arreglo vacío de String.
  • URLs de las imágenes (imgURLs) del juego, comenzando como un arreglo vacío de String.

Así, lograrás capturar la información específica de cada videojuego. Los nombres deberían ser semejantes a las llaves de tu JSON para mantener claridad.

@State private var URL: String = ""
@State private var titulo: String = ""
@State private var estudio: String = ""
@State private var calificacion: String = ""
@State private var añoPublicacion: String = ""
@State private var tags: [String] = []
@State private var imgURLs: [String] = []

¿Cómo mostrar los datos de videojuegos con Scroll View y Lazy Grid?

Para mostrar múltiples elementos, como tags e imágenes, puedes usar un Scroll View combinado con un LazyVGrid. Este método es óptimo para elementos cuya cantidad no es fija, y ayuda a manejar el uso de memoria eficientemente al cargar contenido sólo cuando es necesario.

Configuración del LazyVGrid

Primero, establece la forma de tu grid. Puedes hacerlo utilizando GridItem de tipo flexible para que los elementos se ajusten de manera dinámica.

let layout = [
    GridItem(.flexible()),
    GridItem(.flexible())
]

ScrollView {
    LazyVGrid(columns: layout, spacing: 8) {
        // contenido
    }
}

Este enfoque es particularmente útil cuando no sabes cuántos elementos cargará el servidor, optimizando así el rendimiento de la aplicación.

¿Cómo iterar y mostrar los videojuegos en pantalla?

Para visualizar cada videojuego con su información, apóyate con un ForEach dentro del LazyVGrid. Asegúrate de que tus elementos conformen el protocolo Hashable para que el iterador funcione correctamente.

Procedimiento para crear el grid iterador

  1. Implementa el protocolo Hashable para tu modelo ‘game’:
struct Game: Hashable {
    // Define tus propiedades
}
  1. Iteración con ForEach:
ForEach(todosLosJuegos.gamesInfo, id: \.self) { juego in
    Button(action: {
        URL = juego.videosURL.mobile
        titulo = juego.title
        estudio = juego.estudio
        calificacion = juego.rating
        añoPublicacion = juego.publicationYear
        tags = juego.tags
        imgURLs = juego.galleryImages
        print("Pulsaste \(juego.title)")
    }) {
        Text(juego.title)
    }
}

Este código permite interactuar con cada videojuego mostrando su título y asegurando que la selección correcta se registre para luego poder utilizarla.

¿Cómo mejorar la UI con más estilos y colores?

Mejorar la interfaz no solo depende de mostrar texto. Integra colores y posiciones para que la experiencia del usuario sea óptima.

Configuración de color y paddings

Comienza con crear un ZStack y configura el color de fondo y el padding para cada sección.

ZStack {
    Color("marin").ignoresSafeArea()
    
    VStack {
        Text("Juegos")
            .font(.title2)
            .fontWeight(.bold)
            .foregroundColor(.white)
            .padding(.init(top: 16, leading: 0, bottom: 64, trailing: 0))
        
        // ScrollView y contenido aquí
    }.padding(.horizontal, 6)
}

Esta estructura te permite un control más detallado sobre cómo los componentes visuales interactúan entre sí dentro de tu aplicación.

Con estas configuraciones, invitamos a seguir perfeccionando tu interfaz para una experiencia de usuario óptima. ¡Continúa explorando nuevas posibilidades en la programación de tus videojuegos!