Author Topic: Forzar orientación de la barra de tareas en iOS  (Read 3287 times)

Offline DaCarSoft

  • Community Developer
  • Mr. Polyvector
  • ******
  • Posts: 182
    • View Profile
Hola de nuevo...


Para continuar con mi ración de "XCode-Snippets", os publico un código que soluciona el problema (detectado por Hark0 hace ya tiempo ;)) de la independencia de las imágenes generadas desde GLBasic y la orientación de la barra que aparece en iOS al hacer doble click sobre el botón home en el iPad. Y digo iPad porque en iPhone la barra siempre aparece en el mismo sitio XDDDDDD aunque el código también puede servir para iPhone, ¿a alguien se le ocurre alguna utilidad? ¿Nadie? Os doy una pista: Probad a usar las siguientes llamadas GLBasic ántes de utilizar las llamadas del código que publiqué para mostrar Alerts/Teclado en iOS...

De nuevo, vamos al grano:

En un archivo ".mm" que debeis colocar en vuestro proyecto XCode:

Code: GLBasic [Select]
#if defined (TARGET_OS_IPHONE)

// UIINTERFACEORIENTATION

extern "C" void iOSSetOrientation(const char* cOrientation) {
    // Forzar la orientación de la barra de estado de iOS a partir del parámetro pasado evitando distinguir entre mayúsculas y minúsculas
    if (strncasecmp(cOrientation,"landscapeleft",strlen(cOrientation)) == 0) {
        [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft];
    }
    if (strncasecmp(cOrientation,"landscaperight",strlen(cOrientation)) == 0) {
        [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight];
    }
    if (strncasecmp(cOrientation,"portrait",strlen(cOrientation)) == 0) {
        [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];
    }
    if (strncasecmp(cOrientation,"portraitupsidedown",strlen(cOrientation)) == 0) {
        [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortraitUpsideDown];
    }
}

// FIN UIINTERFACEORIENTATION

#endif
 

Si alguien ya tiene código en un archivo .mm puede obviar el incluir las líneas que comienzan con #

Después, desde GLBasic, podríamos hacer algo como esto, por ejemplo:

Code: GLBasic [Select]

IMPORT "C" void iOSSetOrientation(const char*)

iOSSetOrientation("Portrait")

PRINT "PULSA AHORA EL BOTÓN HOME DOS VECES",100,100

SHOWSCREEN
HIBERNATE
MOUSEWAIT

iOSSetOrientation("PortraitUpsideDown")

PRINT "PULSA OTRA VEZ EL BOTÓN HOME DOS VECES",100,100

SHOWSCREEN
HIBERNATE
MOUSEWAIT

iOSSetOrientation("LandscapeLeft")

PRINT "VENGA, DALE OTRA VEZ DOS CLICKS",100,100

SHOWSCREEN
HIBERNATE
MOUSEWAIT

iOSSetOrientation("LandscapeRight")

PRINT "¡¡¡CENTRIFUGANDOOO!!!!",100,100

SHOWSCREEN
HIBERNATE
MOUSEWAIT


 

Con esto, lo que conseguimos es que si giramos nuestros gráficos desde GLBasic, a partir de los valores devueltos por los acelerómetros, podemos hacer coincidir nuestra orientación con la que "seteamos" o forzamos en iOS...

Como veis, además evito distinguir entre mayúsculas y minúsculas al pasar el parámetro desde GLBasic, para facilitar las cosas al programar.

Esto parece el complemento ideal para las nuevas funciones de rotación que parece que incluirá Gernot en las próximas versiones finales de GLBasic (gracias por la noticia Jordi  :)).


Ya me contareis que tal...


"Si quieres resultados distintos... no hagas siempre lo mismo" - Albert Einstein.

Offline mentalthink

  • Prof. Inline
  • *****
  • Posts: 3366
  • Integrated Brain
    • View Profile
Hola Dacarsoft, donde estabas todo esté tiempo?¿... ;).

Se agradece un montón estos códigos que nos muestras. :enc: :nw: :happy: :-*

Por cierto, me gustaría preguntarte para saber Objective-C que pasos has seguido, o sea me refiero, si hay algún libro para empezar sencillo, o directamente con la web de desarrollo de Apple...

Gracias y un saludo DacarSoft.

Offline msx

  • Prof. Inline
  • *****
  • Posts: 773
    • View Profile
De nuevo gracias, a este ritmo vamos a tener nuestro propia sección Code-Snippets  :good:

Cada día me alegro más de tener una sección en español, cuanto talento...  :nw:

Offline Millerszone

  • Dr. Type
  • ****
  • Posts: 307
  • www.smashedfly.com
    • View Profile
    • Smashed Fly
Thanks DaCarSoft and the rest of you guys for the GLBasic/Objective-C code snippets! :good:
These samples will be very helpful.
Hardware: iMac 27", MacBook Air, PC 3.5Ghz Quad
Developing Tools: GLBasic SDK, Gideros Studio, PureBasic
Developing for: iOS, Android, Windows, OS X, webOS, HTML5

Offline Hark0

  • Prof. Inline
  • *****
  • Posts: 1020
  • Geek Developer
    • View Profile
    • LitioPixel - Desarrollo de videojuegos con GLBasic | Videogame development with GLBasic
CON DOS C*JONES DaCarSoft!!!
  :D


Ya sabes que cuando me despeje de trabajo pondré a prueba este SRC a fondo ;)

Saludos.



PD Avatar "peligroso", jejejejeje... aunque personalmente me gusta... La GC y los equipos de seguridad del gobierno te pueden confundir con "anonymous".... manda webos  ;/
« Last Edit: 2011-Jun-12 by Hark0 »
http://litiopixel.blogspot.com
litiopixel.blogspot.com - Desarrollo videojuegos Indie · Pixel-Art · Retroinformática · Electrónica Development Indie Videogames · Pixel-Art · Retrocomputing · Electronic

Offline msx

  • Prof. Inline
  • *****
  • Posts: 773
    • View Profile
Sí, además por lo que parecen los miembros de anonymous son proetarras   :blink:

Que forma de manipular  :rant:

Offline DaCarSoft

  • Community Developer
  • Mr. Polyvector
  • ******
  • Posts: 182
    • View Profile

Para Mentalthink: La verdad es que he ido aprendiendo buscando lo que necesitaba en cada momento, y aprendiendo un poco de aquí y de allá de cada página que me he ido encontrando usando Google. Por supuesto, la que siempre he tenido que tener abierta es la del portal de Apple...

To Millerszone: It's nothing! :) Tell us how works for you if you use it!!!!

A todos en general: Denadasssssss...  Contad que tal os funciona si lo usais!!!!!

Para Hark0: Tú mejor que nadie para probarlo!!!!! Ya sabes que tú fuiste el culpable de que empezase a investigarlo!!!  :P

En cuanto a mi avatar: jajajaja...  Es el momento ideal para usarlo!!!!  ¿¿¿¿ Qué puede haber mejor que un avatar informático de rabiosa actualidad ???? XDDDDDDDD    Además, para mí que los que han cogido, no ha sido por méritos de investigación policial, sino por un chivatazo...

Para MSX: Y que lo digas...

"Si quieres resultados distintos... no hagas siempre lo mismo" - Albert Einstein.