Das Jahr 2013 endete mit einem großen Knall. Neben dem typischen Silvester-Feuerwerk gab es für mich und viele andere noch eine E-Mail aus Cupertino, die gerade für Januar einiges an Arbeit bedeuten konnte. Die Ankündigung von Apple ab dem 01.02.2014 nur noch Apps in den App-Store zu lassen, die iOS 7 konform sind war schon erstaunlich. Nicht wegen der Ankündigung an sich, sondern vielmehr wegen dem kurzen Zeitraum.

Ich habe die vergangene Woche, speziell den Donnerstag, genutzt, und mich mit dem Thema näher beschäftigt, um in Erfahrung zu bringen, von welchen Aufwänden im Allgemeinen auszugehen ist. Klar bleibt aber auch, dass es stark von der App abhängig ist.

Erste Anlaufstelle: Transition Guide

Über die Besonderheiten der iOS 7 Designsprache konnte man schon früh viele persönliche Meinungen von gut über schlecht lesen. Gemeinsam haben wohl alle einen kleinen Kulturschock erlebt. Auf der Suche nach dem was Apple als konform ansieht, bin ich auf Apples iOS 7 Transition Guide gestoßen, der die wichtigsten Punkte anspricht. Das Dokument könnt ihr hier finden.

Der Bereich "Scoping the Project" gab mir Entwarnung, da ich im Allgemeinen ehr Daten-getriebene Apps für meine Kunden entwickelt habe und weil die Anforderungsliste unter "Things Every App Must Do" besonders klein ausfällt.

Neue Icons reichen nicht

Zwei von drei Aufgaben, die eine App unbedingt erfüllen muss, sind grafischer Natur, die vorsehen angepasste Grafiken für Icons und Startscreen zu liefern.

Der nächste Schritt sah für mich so aus, dass ich die App mit dem iOS 7 SDK kompiliert habe. Schnell wird dabei ersichtlich: Nur das Aktualisieren der Icons reicht nicht aus. Das nachfolgende Bild zeigt, dass sich die Navigation und die Statusleiste über die Liste mit Einträgen legt. Die Navigation ist zudem nicht mehr schwarz, wie auf der linken Seite unter iOS 6.

Vergleich Navigation iOS6 und iOS 7

Der Grund dafür ist das iOS 7 dem Inhalt mehr Raum geben möchte. Deshalb bekommt die App nun die vollen zur Verfügung stehenden Bildschirmabmessungen und die Navigations- sowie Statusleiste werden über dem Inhalt eingeblendet.

Mögliche Lösungswege

Davon ausgehend, dass ich kein Xcode zum Erstellen meines Layouts verwende, gibt es meiner Meinung nach zwei mögliche Lösungswege. Der Erste bedeutet, dass man die Positionsangaben aller Controls anpasst. Das kann schon mal aufwendiger werden.

Ich bevorzuge den zweiten Weg. Denn mit iOS 7 steht uns Entwicklern die Eigenschaft EdgesForExtendedLayout zur Verfügung. Man kann damit bestimmen, wie die App das Layout bereitstellen soll. Auf diese Weise lassen sich bereits grobe Darstellungsfehler beheben. Gegebenenfalls müssen nun nur noch einzelne, gerade im unteren Bereich des Screens befindliche Controls anders positioniert werden. Folgender Code bringt Abhilfe:

int SystemVersion = Convert.ToInt16 (UIDevice.CurrentDevice.SystemVersion.Split ('.') [0]);
if (SystemVersion >= 7)
{
    EdgesForExtendedLayout = UIRectEdge.None;
    NavigationController.NavigationBar.BarStyle = UIBarStyle.Black;
}

Mit der Prüfung auf iOS 7 vermeidet man, daas die App auf älteren Geräten abstürzt. Damit die Navigationsleiste nun auch wieder schwarz dargestellt wird hilft NavigationController.NavigationBar.BarStyle = UIBarStyle.Black; weiter.

Berichtigte Navigation

Fazit

Ich für meinen Teil empfinde den Aufwand eine bestehende App auf iOS 7 Design anzupassen inzwischen nicht mehr so aufwändig. Dabei ist mit schon klar, dass eine stärker im Design modifizierte App mehr Aufwand bedeutet. Die Möglichkeiten sich aber ähnlich sind. Xamarin dachte sich wohl am Donnerstag das Gleiche und hat hier einen Artikel zum Thema veröffentlicht. Für mich kam er auf Grund der Zeitverschiebung allerdings zu spät.

comments powered by Disqus