Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Añadir o cambiar código según la plataforma con UIDevice

7/11
Recursos

Aportes 3

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Esto no lo veo como buena practica el duplicar código solo por el Device.
Quizás seria mejor crear una clase genérica (utilitaria) donde se le pase el tipo de Device o pantalla y el retorne un numero el cual se le asigne al tamaño que corresponde.

creo que seria mejor usar variables para el tamaño dependiendo del dispositivo , esto para no copiar todo el codigo de un bloque , asi que en caso de hacer una modificacion al codigo no haces la modificacion en las dos partes cada vez

Dejo mi aporte para mejor resolución y no repetir código::

En la primer vista que llame su app, por ejemplo el ContentView.swift, crear la variable al inicio y fuera de todo struct

var dispositivo = UIDevice.current.model

Con esta variable se puede saber el dispositivo desde cualquier punto de la app, ya que es una var global.

Luego en el inicio del modulo agregar

    @State var medidaCategoriaBoxWidth:CGFloat=160
    @State var medidaCategoriaBoxHeight:CGFloat=120
    @State var medidaCategoriaCornerRadious:CGFloat=8
    @State var medidaCategoriaImageWidth:CGFloat=30
    @State var medidaCategoriaImageHeight:CGFloat=30
    @State var medidaCategoriaFontSizeType:Font=Font.body

Luego en un nuevo onAppear en el HStack de Categorías agregar

.onAppear(perform: {
                    if(dispositivo=="iPad"){
                        medidaCategoriaBoxWidth=300
                        medidaCategoriaBoxHeight=220
                        medidaCategoriaCornerRadious=18
                        medidaCategoriaImageWidth=70
                        medidaCategoriaImageHeight=70
                        medidaCategoriaFontSizeType=Font.title
                    }else{//iPhone
                        medidaCategoriaBoxWidth=160
                        medidaCategoriaBoxHeight=120
                        medidaCategoriaCornerRadious=8
                        medidaCategoriaImageWidth=30
                        medidaCategoriaImageHeight=30
                        medidaCategoriaFontSizeType=Font.body
                    }
                })

Luego, en cada botón o card de categoría

Button(action: {}, label: {
                        ZStack {
                            RoundedRectangle(cornerRadius:medidaCategoriaCornerRadious).fill(Color("blue-grey")).frame(width: medidaCategoriaBoxWidth, height: medidaCategoriaBoxHeight, alignment: .center
                            )
                            
                            VStack(alignment: .center){
                                Image("open-world-icon").resizable().frame(width: medidaCategoriaImageWidth, height: medidaCategoriaImageHeight, alignment: .center).padding(.top, 10)
                                Text("OPEN WORLD")
                                    .font(medidaCategoriaFontSizeType)
                                    .fontWeight(.heavy)
                                    .foregroundColor(Color("cian"))
                                    .frame(maxWidth: .infinity, alignment: .center).padding(.bottom,10)
                            }.padding(EdgeInsets(top: 11, leading: 11, bottom: 11, trailing: 11))
                        }
                    })

Listo, con eso queda dinamico.