SKView frame incorrecto en simulador de iPhone.
Mi objetivo es construir y ejecutar el Proyecto de Plantilla Xcode SpriteKit en un iPhone 12 Pro Max. Utilizaré Xcode Versión 12.5 (12E262). He creado muchos proyectos en el pasado, pero recientemente, cuando la aplicación se inicia, el marco de la vista es incorrecto.
Te mostraré lo que quiero decir a través de un ejemplo repetible.
Sigue estos pasos muy cuidadosamente:
1. Abre tu aplicación Xcode.
2. En el menú selecciona: Archivo > Nuevo > Proyecto…
3. Selecciona la plantilla: iOS, Juego.
4. Haz clic en “Siguiente”.
5. Nombra tu producto “Foo” u otro nombre simple.
6. Haz clic en “Siguiente”.
7. Haz clic en “Crear”.
8. En el menú selecciona: Producto > Destino > iPhone 12 Pro Max.
9. En el menú selecciona: Producto > Ejecutar.
10. Ahora, espera a que se inicie el simulador y ¡voilà!
11. En el menú selecciona: Ver > Entrar en pantalla completa.
Para aquellos que no pueden ver la imagen:
He tomado una captura de pantalla del iPhone simulado después de que se haya iniciado. Dado que estamos ejecutando el proyecto de plantilla SpriteKit, el simulador muestra un fondo gris con el texto “Hola mundo” en el centro, como de costumbre. Al examinarlo más detenidamente, las dimensiones del fondo gris no parecen ajustarse de la manera más óptima al iPhone. De hecho, la proporción del fondo gris es (1.5:1), mientras que la proporción del iPhone 12 Pro Max es aproximadamente (2.16:1), una gran diferencia. Esto resulta en grandes rectángulos negros encima y debajo de la vista. ¡Vaya, eso es molesto!
Dentro del archivo GameViewController.swift, dentro del método viewDidLoad()
en la línea 22, agregué:
print(view.frame.size, scene.size) // imprime (320.0, 480.0) (750.0, 1334.0)
Observé lo siguiente:
– view.frame.size
tiene una proporción incorrecta: 480 : 320 = (1.5:1)
– scene.size
tiene una proporción más correcta de: 1334 : 750 ~ (1.78:1)
Parece que he descubierto al culpable, pero no tengo idea de cómo solucionarlo.
davy.ai
Como experto en tecnología de la información especializado en Swift, SpriteKit y SKView, hay algunas soluciones posibles a este problema.
Una posible solución es modificar el archivo GameViewController.swift para asegurarse de que la vista tenga la relación de aspecto correcta para el dispositivo. Aquí están los pasos para actualizar el archivo:
viewDidLoad()
.Este código debería solucionar el problema de la relación de aspecto al establecer el modo de contenido en
scaleAspectFill
, lo que asegurará que la vista llene la pantalla manteniendo la relación de aspecto correcta para el dispositivo.Si esta solución no funciona, otra posible solución es ajustar manualmente el tamaño y la posición de la vista en el código según el tamaño de pantalla del dispositivo. Esto se puede hacer modificando el método
viewDidLoad()
en el archivo GameViewController.swift de la siguiente manera:Este código calcula el tamaño y la posición correctos de la vista según el tamaño de pantalla del dispositivo y establece el marco correspondiente.
Esperemos que una de estas soluciones solucione el problema incorrecto del marco de la vista y permita que el proyecto de plantilla de SpriteKit se ejecute correctamente en el iPhone 12 Pro Max.