Apples iPhone-Tricks für immer höhere Bildschirmauflösungen
Im Laufe der Zeit wurden die Bildschirmauflösungen der iPhones immer höher. Apple hat sich jedoch geschickte Kniffe zur Abwärtskompatibilität einfallen lassen, damit ältere Apps so gut wie möglich aussehen. Für das iPhone 6 Plus sind zusätzliche Tricks notwendig.
(Bild: c't)
In der neuen iPhone-Generation – iPhone 6 und 6 Plus – kommen neue Bildschirmgrößen mit höheren Bildschirmauflösungen zum Einsatz. Das iPhone 6 hat wie seine Vorgänger eine Apple-spezifische Auflösung, das iPhone 6 Plus hingegen ein herkömmliches Full-HD-Panel. Das hat Auswirkungen: Apple musste tricksen, um die Standard-Auflösung mit den anderen, herstellerspezifischen Auflösungen unter einen Hut zu bekommen.
Um zu verstehen, wie iOS mit Bildschirmen unterschiedlicher Auflösung umgeht, fängt man am besten beim allerersten iPhone an. Von iOS darzustellende Objekte werden in einem Koordinationsystem mit 320 × 480 Punkten positioniert – wobei die Koordinaten Gleitkommawerte sind. Die Koordinaten entsprechen den physischen Pixeln des Displays. Die Nachfolger iPhone 3G und 3GS unterscheiden sich in diesem Punkt nicht vom iPhone Classic.
Die erste Änderung erfolgte mit dem Retina-Bildschirm, der im iPhone 4 debütierte. Das Koordinatensystem umfasst weiterhin 320 × 480 Punkte, doch das Retina-Display hat in jeder Richtung doppelt so viele Pixel: 640 × 960. Der Clou: Ein Objekt, das ein Programmierer an einer bestimmten Koordinate platziert, beispielsweise ein Buchstabe, befindet sich bei Nicht-Retina-iPhones an derselben Stelle wie auf einem Retina-iPhone und ist genauso groß. Auf dem Retina-Bildschirm wird der Buchstabe lediglich in doppelter Auflösung gerendert und erscheint daher schärfer.
Beim iPhone 5 (und den hinsichtlich Bildschirm davon abgeleiteten Modellen 5s und 5c) wuchs der Bildschirm in die Länge, was das Seitenverhältnis auf 16:9 änderte. Dementsprechend wurde das Punkteraster gestreckt, nämlich auf 320 × 568 Punkte. Am Rendering mit Faktor 2 hat sich nichts geändert, sodass die fertige Ansicht 640 × 1136 Pixel umfasst. Entwickler mussten mit dem Formatswechel nun allerdings zwei Ansichten für ihre Apps definieren, nämlich eine für das iPhone-5-Format und eine für ältere Geräte.
Ver-6-te-Ansichten
Ver-6-te Ansichten
(Bild: c't)
Beim iPhone 6 und 6 Plus ändert Apple wieder die Bildschirmauflösung und sie ist bei beiden Geräten unterschiedlich – was für Entwickler bedeutet, dass sie für die eine neue Gerätegeneration gleich zwei zusätzliche Koordinatenraster unterstützen müssen.
Beim iPhone 6 geschieht der Größenzuwachs ähnlich wie beim Schritt von den 4er- zu den 5er-Geräten. Allerdings wuchs der Bildschirm jetzt, um das Seitenverhältnis zu erhalten, in Länge und Breite. Apple hat passend dazu das Koordinatensystem auf 375 × 667 Punkte erweitert. Das Rendering erzeugt daraus (analog zu bisherigen Retina-iPhones) 750 × 1334 Pixel für den Bildschirm, der wie beim ersten Retina-iPhone weiterhin 326 dpi hat.
Beim iPhone 6 Plus ändert sich noch mehr. Das Koordinatensystem umfasst 414 × 736 Punkte. Das Rendering geschieht hier erstmals mit dem Faktor 3 pro Dimension, was 1242 × 2208 Bildpunkte ergibt. Anders als bei allen anderen iPhones ist dies aber nicht die Auflösung des Bildschirms, weshalb die zu große Ansicht in einem weiteren Schritt auf die 1080 × 1920 Pixel des Bildschirms herunterskaliert werden muss.
Die Herunterskalierung ist eher theoretisch interessant. Praktisch hat sie nahezu keine Relevanz, weil man sie schlicht nicht bemerkt: Das Verfahren entspricht dem, was bei einer einfachen Art des Anti-Aliasing in 3D-Spielen gemacht wird (Full Screen Anti Aliasing, FSAA). Wegen der sehr feinen Pixelstruktur des Displays (401 dpi) sieht man keine Skalierungsunschärfen, zumal es sich ja um ein Down-Sampling handelt. Mit derselben Methode realisiert Apple übrigens auch die verschiedenen Auflösungen, die Mac OS X auf Retina-MacBooks anbietet.
Durch die von Apple gewählten Auflösungen und Skalierungsfaktoren blieb die physische Größe eines Punkts im Koordinatensystems des Programmierers vom ersten iPhone bis zum iPhone 6 konstant: Auf ein Zoll kommen 163 Punkt oder anders ausgedrückt: Möchte man eine 10 mm lange Linie zeichnen, so muss man 64 Punkt programmieren – auf allen iPhones bis zum iPhone 6. Beim iPhone 6 Plus kommen auf ein Zoll 154 Punkt im Koordinatensystem des Programmierers, alles wird bei gleicher logischer Größe also physisch um 6 Prozent größer.
Der Unterschied ist so unauffällig, dass Programmierer ihn bei der Anpassung ihrer Apps ans iPhone 6 Plus wohl vernachlässigen können. Hätte Apple mit glatten Zahlen gearbeitet und das Koordinatensystem mit 360 × 640 gewählt (Full HD durch drei), dann kämen auf ein Zoll 133 Punkt. Bei gleicher Größe in Punkt wäre also alles um 22 Prozent größer als auf den kleineren iPhones.
Spieleentwickler, die Apples Metal-Schnittstelle nutzen, können den Bildschirm des iPhone 6 Plus übrigens in nativer Auflösung ansprechen, also 1080 × 1920. Somit geht hier keine 3D-Performance verloren, weil man die 3D-Welten nicht zwangsweise in einer unnötig hohen Auflösung rendern muss.
Skalierung und Zoom
Skalierung und Zoom
Die Skalierung des gesamten Bildschirminhalts kommt noch an zwei weiteren Stellen zum Einsatz: Beim Zoom-Modus und zur Darstellung älterer Apps.
(Bild: c't)
Ist einem Nutzer die Darstellung zu fein, so kann er die gesamte Oberfläche von iOS 8 etwas größer darstellen lassen. Apple realisiert diesen Zoom sehr geschickt. Auf dem iPhone 6 Plus wird zur Zoom-Darstellung nicht das 414-×-736-Koordinatensystem verwendet, sondern die 375-×-667-Ansicht, die eigentlich für das kleinere iPhone 6 vorgesehen ist. Das Rendering geschieht weiterhin mit dem Plus-typischen Faktor 3 in jede Richtung, was 2001 × 1125 Bildpunkte ergibt – die dann wiederum auf die 1080 × 1920 Pixel des Displays herunterskaliert werden.
Die Skalierung auf die Bildschirmauflösung geschieht übrigens nur zur tatsächlichen Darstellung. Erstellt man mit dem iPhone 6 Plus Screenshots, indem man Home- und Standby-Taste gleichzeitig drückt, so sind diese 1242 × 2208 Pixel (Standard-Ansicht) beziehungsweise 1125 × 2001 Pixel (Zoom-Ansicht) groß. Das Gleiche gilt für die Darstellung, die Entwickler im iOS-Simulator zu sehen bekommen.
Beim iPhone 6 geht Apple analog vor und verwendet dort für den Anzeigezoom die 320-×-568-Ansicht, die eigentlich für die nächstkleineren 5er-iPhones gedacht ist. Dabei entstehen mit Skalierungsfaktor 2 die iPhone-5-typischen 640 × 1136 Bildpunkte, die dann auf die iPhone-6-Auflösung von 750 × 1334 hochskaliert werden. Dieses Hochskalieren geht mit einem leichten Schärfeverlust einher, der sichtbar ist. Damit sehen Homescreen & Co. also etwas verwaschen aus – wie bei einer alten App, die nicht angepasst ist.
Apropos alte Apps: Weil auch das iPhone 6 Plus dort dann auf die iPhone-5-Ansicht zurückgreifen muss, mag es bei manchen Apps zu Darstellungsfehlern kommen: Die Kombination 320er-Ansicht plus Skalierungsfaktor 3 gab es bisher schließlich nicht und konnte damit auch nicht von den Entwicklern getestet werden.
Das Skalieren älterer, nicht angepasste Apps auf die volle Bildschirmfläche ist übrigens tatsächlich neu für die 6er-iPhones, denn bislang war es nicht nötig: Ein iPhone 5 hat eine nicht angepasste iPhone-4-App nämlich nicht verzerrt, sondern pixelgenau mittig auf Bildschirm dargestellt mit schwarzen Balken oben und unten. (mue)