Anpassungen der Games für iPhone 5

Tja, nun ist das iPhone 5 draußen und mit der neuen Displaygröße ändert sich natürlich auch etwas für alle Programmierer. Die schöne Zeit, in der man nur einen Code für alle Apple-Devices schreiben und für Retina-Displays lediglich mit anderem Suffix im Dateinamen ergänzte Bilder hinzufügen musste, sind wohl endgültig vorbei.

Insofern: Willkommen in der realen Welt der Mobile Entwicklung! Denn vor dem iPhone unter JavaME war die Anpassung für verschiedene Bildschirmgrößen auch schon immer das größte Problem.

Glücklicherweise sind bei den meisten Apps – egal ob Game oder Anwendung – nur die Hintergrundbilder betroffen, denn an der eigentlichen Auflösung hat sich ja nichts geändert! Das heißt, Icons, Sprites, Buttons etc können wir weiterhin wie in der Retina-Version verwenden, doch für Hintergrundbilder müssen wir uns etwas überlegen:

 

Default.png

Kommen wir also zur einfachsten Änderung: das Default.png. Hier hat Apple erfreulicherweise die Konvention mit dem Dateinamen beibehalten. Für das iPhone 5 mit der Auflösung von 1136 x 640 Pixeln muss man dem Projekt einfach eine Datei mit dem Namen „Default-h568@2x.png“ hinzufügen.

 

Storyboard

Mit Schrecken stellt man auch schnell fest: Es gibt kein spezielles Storyboard für iPhone 5, sondern weiterhin nur eine Version für iPhone und eine fürs iPad. Was nun?
Wenn man die Views auf „Autosizing“ bzw. „AutoLayout“ stellt und dann die „Default-h568@2x.png“ hinzufügt, hat man die halbe Miete schon einmal gewonnen.

 

Im Code

Für die Programmierung ist natürlich wichtig, dass man ab sofort keine hartcodierten Werte für die Canvas-Breite und -Höhe verwendet, sondern diese einmal zu Beginn ausliest und sich diese für den schnellen Zugriff jeweils in einer Variablen speichert.
Im schlimmsten Fall, falls es auch Layoutänderungen geben sollte (bei den im Buch besprochenen Games außer bei „Montgolfiére“ eigentlich nirgendwo der Fall), kann man im Code noch immer ganz einfach und „dreckig“ über

if ([[UIScreen mainScreen] bounds].size.height == 568) {...}

die Bildschirmhöhe bzw. -breite abfragen und darauf Bezug nehmen.

Wer es ein wenig weniger hart mag, kann auf die elegante Idee des MethodSwizzling zurückgreifen, die iOS-Entwickler Angel G. Olloqui in seinem Blog vorstellt:

http://angelolloqui.com/blog/20-iPhone5-image-loading

 

Aber unabhängig davon: Auch wenn die „guten, alten Zeiten“ der einfachen Screenportierung vorbei zu sein scheinen, im Vergleich zu JavaME oder der Displayvielfalt unter Androidgeräten ist das Murren über die erschwerten Anpassungen Jammern auf sehr, sehr hohem Niveau.

Einen Kommentar schreiben

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.