Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?

Flüssigere Animationen in iOS 12: Was Apple verbessert hat

Als Apple iOS 12 ankündigte, überraschte der Konzern mit der unterstützten Hardware: iOS 12 läuft auf allen Geräten, die derzeitig iOS 11 unterstützten - also selbst noch auf dem nun 5 Jahre alten iPhone 5s. Apple ging sogar noch einen Schritt weiter: Besonders auf älteren Geräten steigerte Apple die insgesamte Performance von iOS 12 merklich.

An dieser Stelle gebührt Apple ein großes Lob: Während andere (Smartphone-)Hersteller nach dem Verkauf der Geräte wenn überhaupt nur zögerlich und mit großem zeitlichen Versatz Aktualisierungen anbieten (selbst bei sicherheitsrelevanten Updates!), liefert Apple für ein fünf Jahre altes Gerät noch maßgebliche Geschwindigkeitsverbesserungen, in die Apple mit Sicherheit einiges an Arbeit gesteckt hat. Auf der diesjährigen WWDC-Session betreffend Neuerungen in Cocoa Touch erklärte Apple, wie man die schnelleren und flüssigeren Animationen erreichte:

Schnellere Hochtaktung des Prozessors
Schon mit iOS 10 führte Apple Programmierschnittstellen ein, über die Entwickler Daten bereits in den Speicher laden konnten, bevor diese wirklich auf dem Bildschirm dargestellt werden. Damit wollte Apple erreichen, dass zu dem Zeitpunkt der Darstellung schon alle Daten im Speicher vorhanden sind und nicht erst noch errechnet oder aus einer Datenbank geladen werden müssen.


Leider führte dies aber nicht in allen Fällen zum Erfolg: Schnelles Scrollen in Listen resultierte immer noch in merklichen Rucklern. Nach langem Suchen identifizierte Apple das Problem: Bei Geräten, die besonders energieeffizient arbeiten müssen, ist es außerordentlich wichtig, die Taktrate des Prozessors in Phasen geringer Last so gering wie möglich zu halten. Sind gerade keine rechenintensiven Aufgaben vorhanden, legt sich der Prozessor, umgangssprachlich gesagt, schlafen und verbraucht kaum Energie. Apple fand heraus, dass die Hochtaktung des Prozessors zu zaghaft geschah - scrollte der Nutzer schnell durch eine Liste und es mussten neue Bestandteile geladen und dargestellt werden (eine rechenintensive Aufgabe), dauerte es recht lange, bis iOS die Taktrate des Prozessors genügend steigerte.


Mit iOS 12 soll der Prozessor unter Last nun erheblich schneller die Taktrate steigern - sich nach Abarbeitung der Aufgabe aber auch möglichst schnell wieder "schlafen legen".

Auto-Layout weiterer Flaschenhals
Vor einigen Jahren führte Apple Auto-Layout ein: Damit kann der Entwickler ohne Programmiercode erreichen, dass sich Textfelder, Knöpfe, Listen und andere Oberflächenelemente durch Definition bestimmter Regeln am zur Verfügung stehenden Platz ausrichten.


Bei der Untersuchung stellte Apple fest, dass bei komplizierten Hierarchien von Oberflächenelementen der Arbeitsaufwand fast exponenziell mit der Anzahl der Elemente stieg. Durch Optimierungen des Auto-Layout-Algorithmus erreichte es Apple, dass der Prozessor beim Ausrichten von Elementen deutlich weniger beansprucht wird, als noch in iOS 10 oder 11.

Kommentare

MLOS07.06.18 20:40
Dafür besteht der iCloud music Sync-Fehler immer noch, der seit iOS 11.0 da ist.
-16
holk10007.06.18 21:05
Was ist das für ein Fehler?
0
holk10007.06.18 21:20
Ok. Hab’s gegoogelt. Das ist ärgerlich. Finde aber nicht unbedingt, dass das ein passender Kommentar zu diesem Artikel ist. Das eine hat mit dem anderen nun wirklich nichts zu tun.
+7
nacho
nacho07.06.18 21:22
Ich hätte mir auch eine macOS Version gewünscht die mehr Performance für ältere Hardware bietet.
+7
dpboom
dpboom07.06.18 21:31
MLOS
Dafür besteht der iCloud music Sync-Fehler immer noch, der seit iOS 11.0 da ist.

Sehr spannend zu unpassenden Kommentaren...
+9
HR07.06.18 21:34
Vermutlich hat Apple ein schlechtes Gewissen, dass man sich jetzt auch um alte Geräte kümmert. Mein iPad3 ist eigentlich zu nichts mehr zu gebrauchen mit dem letzten Softwareupdate wurde es entwertet. Es reagiert einfach auf alles träge. Ich habe auf dem iPhone 6s immer noch 10.3.3, das läuft super.
0
MLOS07.06.18 21:43
dpboom

Dieser Kommentar war noch unpassender. Wollte nur damit zeigen, dass man sich zwar um Animationen kümmert, aber noch nicht um den iCloud-Fehler. Mal sheen, ob das noch behoben wird, gemeldet ist es schonmal.☺️
-18
Mendel Kucharzeck
Mendel Kucharzeck07.06.18 22:08
HR
Leider war das iPad 3 aber auch ein Gerät mit unterdimensionierter Hardware (besonders Grafikpower) und überdimensionierter Auflösung. Für die immense Auflösung war die CPU und GPU einfach erheblich zu schwach dimensioniert - merkte man selbst im damaligen Zustand mit Original-iOS.
+11
goldgeist
goldgeist07.06.18 22:19
Autolayout... Das ist zwar prinzipiell eine gute Idee, geriet aber schnell zu einem unfassbaren Horror für Entwickler, weil die API für Ausrichtungsänderung sich in den IOS Versionen deutlich unterscheidet. Autolayout selbst auch.
Will man ältere iOS Versionen unterstützen oder gar ein Layout für Phones und Pads gemeinsam nutzen endet der Entwickler allzu oft im Sumpf des Fehlverhaltens.

Nicht selten denkt man dann erschöpft an CSS und Responsive Design und denkt: Warum zum Teufel muss das so kompliziert gemacht werden???

Nun, ich will ja nicht sagen, dass es nicht funktioniert, wenn man es im Rahmen dessen was Apple sich dabei gedacht hat einsetzt (Ausserdem habe ich das letzte mal native Apps vor ca 3 Jahren - also mit iOS 9 oder 10 - geschrieben und weiss nicht wie es nun aussieht).

Spassig war es aber nicht. Der geneigte User hat ja keine Ahnung, mit was sich Entwickler so rumschlagen müssen.

Das Schlimmste was Apple mit seinem UI System gemacht hat, war die anfängliche Festlegung auf fixe Seitenverhältnisse für iPhone Screens als auch für iPads. Die später integrierten Retinadisplays wurden ja recht elegant integriert.
Aber dann ging es los. iPhone 5: neues Ratio. IpHone6: neues Ratio. iPhone Plus, neue Ratios und 3x Auflösung. iPhone X noch schlimmer. Da gibt es nicht nur neu Ratios und Auflösung sondern auch noch geschützte Bereiche und runde Ecken und und und.

Solange man nativ in Xcode arbeitet und immer nur das neueste System unterstütz mag es ja leicht von der Hand gehen. Ansonsten gerät es zu einem unangenehmen Gehacke. Und wenn man Crossplatform Software wie Unity3D, Unreal oder sonst was benutzt... Da kann man mehrere Wochen warten bis alles wieder unterstützt wird.

Mit dem Artikel hat dies nur insofern zu tun: Wenn man Autolayout nicht richtig anlegt oder zu viel will läuft das eh ruckelig oder unter irgendeiner Bedingung optisch falsch.
+6
Mendel Kucharzeck
Mendel Kucharzeck07.06.18 22:35
goldgeist
Ich konnte Auto-Layout bisher auch nicht viel abgewinnen. Jedes mal, wo ich das nutzen wollte, habe ich nach gewisser Zeit entnervt aufgegeben, weil wieder irgendein blöder Spezialfall nicht abgedeckt war und landete wieder bei dem guten alten layoutSubviews.
-1
Raziel108.06.18 06:31
goldgeist

Also ich komme ja vom Webbereich und bin quasi erst bei meinen ersten Apps dabei. Finde aber Autolayout eigentlich sehr einfach und hatte auch bisher keine Probleme mit Autolayout in Verbindung mit verschiedenen Gerätetypen und Displaygrößen. Wobei vermutlich die Stackviews oder wie sie heist viele Fälle vereinfacht hat die vorher recht kompliziert waren
+2
LoCal
LoCal08.06.18 09:21
goldgeist
Autolayout... Das ist zwar prinzipiell eine gute Idee, geriet aber schnell zu einem unfassbaren Horror für Entwickler, weil die API für Ausrichtungsänderung sich in den IOS Versionen deutlich unterscheidet. Autolayout selbst auch.
Will man ältere iOS Versionen unterstützen oder gar ein Layout für Phones und Pads gemeinsam nutzen endet der Entwickler allzu oft im Sumpf des Fehlverhaltens.

[…]

Nun, ich will ja nicht sagen, dass es nicht funktioniert, wenn man es im Rahmen dessen was Apple sich dabei gedacht hat einsetzt (Ausserdem habe ich das letzte mal native Apps vor ca 3 Jahren - also mit iOS 9 oder 10 - geschrieben und weiss nicht wie es nun aussieht).

Das Schlimmste was Apple mit seinem UI System gemacht hat, war die anfängliche Festlegung auf fixe Seitenverhältnisse für iPhone Screens als auch für iPads. Die später integrierten Retinadisplays wurden ja recht elegant integriert.
Aber dann ging es los. iPhone 5: neues Ratio. IpHone6: neues Ratio. iPhone Plus, neue Ratios und 3x Auflösung. iPhone X noch schlimmer. Da gibt es nicht nur neu Ratios und Auflösung sondern auch noch geschützte Bereiche und runde Ecken und und und.

Solange man nativ in Xcode arbeitet und immer nur das neueste System unterstütz mag es ja leicht von der Hand gehen. Ansonsten gerät es zu einem unangenehmen Gehacke. Und wenn man Crossplatform Software wie Unity3D, Unreal oder sonst was benutzt... Da kann man mehrere Wochen warten bis alles wieder unterstützt wird.

Mit dem Artikel hat dies nur insofern zu tun: Wenn man Autolayout nicht richtig anlegt oder zu viel will läuft das eh ruckelig oder unter irgendeiner Bedingung optisch falsch.

Tut mir leid, aber das was Du da schreibst ist grosser Mumpitz.
Die verschiedenen Displaygrössen waren der Grund für Autolayout und damit wird dem Entwickler extrem viel Arbeit abgenommen! Ja, AutoLayout ist manchmal merkwürdig, aber in den meisten Fällen ist es, besonders in Verbindung mit SizeClasses, eine absolute Arbeitserleichterung.
Allein die Möglichkeit mit Size Classes eine UI für alle Displays und Geräte zu bauen, die sich aber den Eigenheiten des Zielsystems anpasst ist ein unschlagbarer Vorteil.

Ich erinnere mich noch gut an die Zeit, als das iPhone 5 kam und die Kunden, die Ihre App vor Autolayout beauftragt hatten, dann Anpassungen wollten. Die, die eine Umstellung auf Autolayout bezahlten, sahen iPhone 6/Plus entspannt entgegen. Die, die nur Änderungen der Frames wollten, waren beim 6er dann "schockiert".

Und Aussagen wie:
Das ist zwar prinzipiell eine gute Idee, geriet aber schnell zu einem unfassbaren Horror für Entwickler, weil die API für Ausrichtungsänderung sich in den IOS Versionen deutlich unterscheidet. Autolayout selbst auch.
sind auch quatsch.
Mit jeder neuen iOS-Version entwickelen sich die APIs weiter. Wenn man ältere iOS-Versionen unterstützen will, dann nutzt man keine Methoden des neuen SDKs.
Und Apps die für z.B. iOS 10 entwickelt wurden, bleiben mit iOS 11 und iOS 12 weiterhin lauffähig … zumindest was Autolayout betrifft.
Und grössere Displayänderungen, wie z.B. beim iPhone X, fängt Apple für ältere Apps immer sehr gut ab. Der User merkt oft, dass die App noch nicht angepasst wurde, aber es gibt keinerlei Funktionsbeeinträchtigung.
Ich hab zwar keine Lösung, doch ich bewundere dein Problem
+5
PaulMuadDib08.06.18 09:49
Also ich finde AutoLayout auch echt gut. Es kostet zwar etwas Einarbeitung, aber dann …

Ich empfehle dazu die Videos von Prof. Paul Hagerty der Stanford Uni. Die sind echt gut.
+4
Wurzenberger
Wurzenberger10.06.18 07:39
nacho
Ich hätte mir auch eine macOS Version gewünscht die mehr Performance für ältere Hardware bietet.

Im Gegensatz zu iOS wurde macOS aber nicht mit jeder Version langsamer.
-1
ela12.06.18 14:36
Apple soll noch einen "peinlichen" (oder arg versteckten) Performance-Bug behoben haben:
Die Listen zeichnen beim scrollen normalerweise schon außerhalb des Bildschirms neue Zellen (Cache), um diese dann ganz weich in die Ansicht scrollen zu können. Da gab es wohl ein Problem: In dem Augenblick, wo die Zelle in den sichtbaren Bereich kam, wurde sie erneut gezeichnet! So wurde also jede Zelle nicht nur 2x gezeichnet sondern einmal auch noch dann, wenn die CPU und GPU ohnehin gerade beschäftigt waren mit Scrollen und Fingerinteraktionen ... Das soll nun (endlich) behoben worden sein.
(ob das nun generell bei den Scroll-Views passierte oder nur unter bestimmten Bedingungen weiß ich nicht)
0
goldgeist
goldgeist18.06.18 19:01
Ich sagte ja, es ist ein paar Jahre her. Jetzt mag Auto Layout ja besser sein. Von Mumpitz und Quatsch zu reden ist aber nicht fein.
0
LoCal
LoCal19.06.18 09:25
goldgeist
Ich sagte ja, es ist ein paar Jahre her. Jetzt mag Auto Layout ja besser sein. Von Mumpitz und Quatsch zu reden ist aber nicht fein.

Doch … und ich gehe einfach mal davon aus, dass Du AutoLayout schon damals nicht verstanden hast.
AutoLayout selbst ist kaum anders als es eingeführt wurde, es kamen später noch die SizeClasses hinzu, aber die ändern nichts an AutoLayout selbst.
Ich hab zwar keine Lösung, doch ich bewundere dein Problem
0

Kommentieren

Sie müssen sich einloggen, um die News kommentieren zu können.