Wie kann ich UIModalTransitionStylePartialCurl in einer UIView verwenden, die NICHT den gesamten Bildschirm einnimmt?
In apples offizielle Maps-app für das iPhone, gibt es eine kleine "page curl" - button in der unteren rechten Ecke. Wenn Sie auf den Knopf drücken, die Karte selbst schält zurück zu offenbaren einige Optionen. Ich möchte doppelte dieser Effekt in meiner eigenen app.
Ich versuche, UIModalTransitionStylePartialCurl (Hinzugefügt in SDK 3.2). In Bezug auf das layout meiner app ähnelt apples offizielle Karten-app fast genau. Kann ich den GESAMTEN Bildschirm zu ziehen, offenbart eine andere Sicht unter, aber das will ich nicht. Ich will NUR die Karte anzeigen zu schälen.
Damit um diesen Effekt zu erstellen, müssen Sie eine UIViewController, der übergang. Wenn ich diese UIViewController Blick auf eine kleine Untersicht irgendwo auf dem Bildschirm, die nimmt nicht den gesamten Bildschirm, die ich bekommen kann, nur, dass Untersicht zu schälen. Das ist toll! Nachdem jedoch der zweite Teil des übergangs (wenn die Seite fällt zurück in place), die Ansichten sind nie da, wo Sie angefangen haben. Entweder ist der Ansicht, geschält zurück bewegt haben, von seiner ursprünglichen position, oder der Blick, der offenbart wurde, wird erweitert zu nehmen den gesamten Bildschirm.
Ist es offensichtliche Fehler, die ich mache? Ich würde wirklich zu schätzen jede Hilfe!!!
Den code, den ich verwende, ist wirklich einfach. Es ist im Grunde nur:
underMapViewController.modalTransitionStyle = UIModalTransitionStylePartialCurl;
[curlableMapViewController presentModalViewController:underMapViewController animated:YES];
InformationsquelleAutor der Frage caecus314 | 2010-10-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus der Dokumentation:
Obwohl, ich habe nicht jede exception mit anderen Präsentationen als Vollbild. Ich testete aus und ich bekomme das gleiche problem wie du. Ich fand, dass, wenn mein ParentViewController ist der Ansicht, eine Bildansicht und ich den Inhalt-Modus zu UIViewContentModeCenter, die Sicht wird nicht verändert oder verschoben werden. Vielleicht gibt es einen workaround durch das speichern der aktuellen Ansicht als Bild, legte es auf die Spitze, machen Sie die Rollen, und nachdem Sie entlassen Ihre modalen ordnen Sie die Durcheinander versteckte Sachen und entfernen Sie die Obere Ansicht. Ich weiß, es klingt verrückt, aber das ist, was ich versuchen würde, wenn ich wirklich zu erreichen, dass die Anforderung.
Hoffe, das hilft, Jorge.
InformationsquelleAutor der Antwort Jorge
Wie wäre es mit etwas wie dieses:
Hinweis: für einige Ansichten, wenn die Ansichten sind Komplex und off-Center könnte es Artefakte. Ändern
cache:YES
zucache:NO
zu beheben.InformationsquelleAutor der Antwort Marius
Als cprcrack Punkte heraus, dies beantwortet nicht die ursprüngliche Frage. Jedoch, es ist nützlich, Informationen, die so in diesem Sinne werde ich es hierbei belassen.
Dies ist tatsächlich viel einfacher, als Sie vielleicht erraten.
Rufen wir die view-Controller
MapViewController
undSettingsViewController
. Ihr problem ist, Sie wollen zu schälen Teil (und nur teilweise) vonMapViewController
zu zeigenSettingsViewController
.Hier ist, wie Sie es tun:
SettingsViewController
's Blick.UIModalTransitionStylePartialCurl
um den übergang zwischen Ihnen, wie Sie bereits sind.iOS erkennt, dass Sie dies getan haben, automatisch und nur schälen
MapViewController
's Blick zurück weit genug, um die untere Hälfte derSettingsViewController
's Ansicht, die ist, wo alle Ihre Inhalte.Wenn du Inhalt in der oberen Hälfte der
SettingsViewController
's Ansicht, iOS erkennt, schälen und zurückMapViewController
s anzeigen aller Art statt.Zusammenfassung: Inhalt nur in der unteren Hälfte Ihrer neuen Ansicht. iOS wird es herausfinden.
(Ich glaube nicht, dass dies dokumentiert ist überall, sorry.)
InformationsquelleAutor der Antwort Steven Fisher
Hatte ich eine leichte hiccough verwirrend
und
Die erste geht auf die ZIEL-viewController, z.B. die, die Sie wollen unter. Der zweite geht auf die ELTERN-viewController, z.B. die eine, die tatsächlich verzerrt durch die locken. Die OP habe dieses Recht, aber ich habe es falsch, und es war sehr frustrierend, vor 10 Minuten habe ich es herausgefunden. Werfen Sie auf diesem posten für den Fall, es gibt jemand anderes den Kopf Schlag, den ich brauchte.
InformationsquelleAutor der Antwort Chris Ladd
Ich lief in dieses problem, wie gut. Für mich ist der Rahmen der übergeordneten Ansicht war nicht entstellt, bis das modale Ansicht wurde abgewiesen. Also ich Cache der Rahmen vor dem schließen dann wieder nach rechts.
InformationsquelleAutor der Antwort Cliff W
Mir hatte auch dieses problem,aber ich habe es gelöst..(ich weiß nicht, Ihr den richtigen Weg,aber seine Arbeit)
Wollte ich hatte eine Bildansicht innerhalb einer scrollview,und wenn der Benutzer auf eine Schaltfläche tippt, innen, scroll-view ich wollte curl-up der scroll-Ansicht und zeigt eine tableview in diesem Ort.
So legte ich eine tableview hinter scrollview und erstmal einstellen, dass es ausgeblendet.wenn der Benutzer tippt auf die Schaltfläche
ich habe
danach entfernt frontview aus dem Blick.
Hoffe, das hilft..
InformationsquelleAutor der Antwort Ajith
Ich glaube, dass Apple die Karten-Anwendung verwendet die undokumentierte übergänge: mapCurl und mapUncurl. Ich bin nicht sicher, ob es irgendeinen Weg gibt, genau das zu tun, was caecus314 will (das ist auch der Effekt, den ich haben versucht, zu duplizieren).
UIModalTransitionStylePartialCurl wird curl up den ganzen unteren Teil der ersten Sichtweise, der einschließlich der Symbolleiste, die im Gegensatz zu apples Karten-app, die nur locken bis die map und lässt sich in der Symbolleiste platzieren.
Soweit ich das beurteilen kann gibt es keine Möglichkeit, nur zusammenrollen der Karte.
InformationsquelleAutor der Antwort Peter
Überschreiben der
viewWillDisappear
Methode IhrerunderMapViewController
mit so etwas wie dies:Korrigiert, dass die Größe der Ansicht der
curlableMapViewController
auf das wissen, die Größe, die Sie angeben, was Sie sparen könnten, früher in derviewWillAppear
Methode, zum Beispiel.InformationsquelleAutor der Antwort cprcrack