Was sind die Vorteile von UIPresentationController gegenüber Nur das Hinzufügen von Unteransichten und das Animieren der Ansicht, die Sie präsentieren möchten? Es scheint ein bisschen mühsam zu sein mit all dem Protokoll, dem es entsprechen muss, und viele Leute bevorzugen immer noch, ihre Ansicht mit einfacher Rahmenanimation zu präsentieren. Was war Apple Logik bei der Einführung der Klasse?Was benötigt UIPresentationController neben der Traitsammlung in iOS?
0
A
Antwort
3
Präsentationsmaschinen waren ein Teil von UIKit, lange bevor UIPresentationController eingeführt wurde. UIPresentationController bietet mehr Flexibilität und ermöglicht das Erstellen von benutzerdefinierten Präsentationen, abgesehen von den integrierten (Vollbild, aktueller Kontext, Popover usw.). Es gibt eine Reihe von Gründen für die Präsentation Maschinen und UIPresentationController zu existieren:
- Ansicht Verwalten von Hierarchien. Wann immer Sie die Ansicht präsentieren möchten, besitzen Sie nicht immer den präsentierenden View-Controller. In der Regel wird davon abgeraten, die Unterhierarchie des View-Controllers zu stören, die Sie nicht besitzen, aber im Fall der Präsentation müssen Sie die Ansicht View-Controller als Kind der präsentiert View-Controller anzeigen (oder seine superview). Es wird komplizierter, wenn In-Kontext-Darstellungsketten involviert sind (zum Beispiel Popover -> aktueller Kontext -> Freigabeblatt). Bei Präsentationsmaschinen sorgt UIKit für ein konsistentes View-Hierarchiemanagement. Außerdem wird eine Containeransicht für die UIPresentationController-Klasse eingerichtet, damit sie sich darauf konzentrieren kann, nur die Ansichten zu verwalten, die an der Präsentation teilnehmen. Die UIPresentationController-Klasse kann der Containeransicht beliebige Deko- und Schattenansichten hinzufügen und auf Layoutänderungen in der
containerViewWillLayoutSubviews
-Methode reagieren. - Verwaltungsmodalität. View-Controller werden in einer ganz bestimmten Reihenfolge präsentiert und ausgeblendet und Präsentations-Controller-APIs erzwingen dies. Präsentationsmaschinen stellen auch sicher, dass die Interaktion für die Ansichten deaktiviert ist, die durch die Präsentation verdeckt wurden.
- View-Controller-Hierarchie pflegen. Präsentations-Controller könnten als eine spezifischere Art von View-Controller-Containment betrachtet werden, sie stellen sicher, dass präsentierte View-Controller immer noch Teil einer View-Controller-Hierarchie sind. Dies ist notwendig für die Merkmalserfassung, Aussehen Rückrufe, senden
viewWillTransitionToSize:withTransitionCoordinator:
, Durchführung von View Controller-Übergängen (einschließlich verschachtelte Präsentationen) und vieles mehr. - Verwalten von Ersthelfern. Wenn die Präsentation stattfindet, wird der aktuelle Ersthelfer verstaut und nach der Entlassung wiederhergestellt.
Dank @egdmitry, ich upvotiert, aber Ihre Erklärung ist immer noch so dicht wie der Apple Doc auf UIPresentationController. Ich bin also immer noch ziemlich verwirrt. Ein praktischer Vergleich der Verwendung der Klasse-über-Frame-Animation könnte helfen, wenn Sie die Zeit finden. – irkinosor
Mit der Klasse meinst du Unterklasse UIPresentationController oder Verwendung von Präsentations-Controller-Maschinen im Allgemeinen? Verstehe ich richtig das Wesen Ihrer Frage ist, warum Präsentationsmaschinen im Allgemeinen im Gegensatz zu direkten Frame-Manipulation verwendet werden sollten? – egdmitry
Ja, zBdmitry! Ich meine, die Verwendung von Präsentationsmaschinen sollte generell im Gegensatz zur direkten Rahmenmanipulation verwendet werden. Ich finde die UIPRESENTATION-Maschinerie umständlich, wenn in vielen Fällen das Animieren Ihres Frames die Aufgabe erfüllt. Also versuche ich die Fälle zu verstehen, in denen man nicht kann oder die Präsentation ist einfach viel besser. – irkinosor