Bewegen Statusleiste in iOS 7
Das problem, das ich bin vor ist diese:
Ich umsetzen will, ein iOS-7-app mit einem schönen design und Links - /rechts-Menü, das erscheint, nachdem der Haupt-anzeigen animieren, sich nach rechts/Links. Ich Tue dies mit [UIView animateWithDuration...]
code, aber das ist nicht wirklich wichtig. Was ich erreichen will, ist der gleiche Effekt der Mailbox iOS 7 app: bewegen Sie die Statusleiste Weg (rechts/Links) mit der Hauptansicht
Bild zur besseren Erklärung:
Was ich nur gefunden ist diese Artikel über das Thema, mit funktionierendem code Verwendung von Privaten APIs, die möchte ich nicht verwenden, da ich möchte, dass meine app die Aufnahme in den App Store.
Ich möchte den gleichen Effekt erzielen ('legal'). Hat jemand weiß, wie?
Dank!
Erstellen Sie eine container-controller, und fügen Sie Ihrem Menü und Haupt-Ansicht als childViewControllers. Dann können Sie die Statusleiste im Menü versteckt-controller und wird es bewahren, die anderen view-controller-status-bar, ohne die Verwendung von screenshots (die sind weniger als genial meiner Meinung nach).
haben Sie ein Beispiel-Projekt? Wenn ja, können Sie teilen diese ein?
InformationsquelleAutor Gyfis | 2013-09-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Kern von ihm ist, verwenden Sie diese Methode, eingeführt in iOS 7:
https://developer.apple.com/documentation/uikit/uiscreen/1617814-snapshotview:
Damit erhalten Sie einen UIView mit einem screenshot, enthält die Statusleiste. Sobald Sie dass haben, es ist nur eine Frage der verstecken Sie Ihre aktuelle Ansicht, dann schieben Sie die screenshot-Ansicht um.
Ich habe eine proof-of-concept hier:
https://github.com/simonholroyd/StatusBarTest
HINWEIS habe ich nicht eingereicht-code, der dies tut, durch den Apple review-Prozess, aber dies ist nicht eine private API-Methode.
Etwas anderes zu beachten, wenn Sie sich weiter mit diesem feature: die Mailbox-app hat einen bug, wo beim Multitasking, der screenshot zeigt nicht unterdrücken, die status-bar. Also, wenn Sie die app beenden Sie mit der linken Menü zu öffnen, dann Multitasking, sehen Sie doppelte status-bars in der multitasking-Ansicht.
Das ist eigentlich ziemlich gut zu wissen! Sie sind keine Götter 🙂 Danke!
Obwohl, wie es scheint, ist die Mailbox-app tut es in der gleichen Weise, da die status bar ändert sich nicht, wenn Sie verschoben Weg vom Bildschirm. Das einzige, was ich denken werde, jetzt ist 'Kaputt!'
Sie fragte, wie Sie zu erreichen den gleichen Effekt! Es ist nur, dass eine Wirkung.
InformationsquelleAutor Simon Holroyd
So, nach dem ersten push von Herrn Simon Holroyd und einigem suchen habe ich die Lösung gefunden, wie die Umsetzung dieser "Effekt" - Funktionalität. Dies ist der code:
EDIT: mister pcholberg Recht darauf hingewiesen, dass der ehemalige code funktionierte nicht auf dem eigentlichen Gerät, nur auf dem iOS-Simulator, also ich habe bearbeitet es, indem seine Empfehlung
...
...
Also der erste Teil schafft Kontext, verwendet die Methode, die Simon erwähnt, stützt die Ansicht der Statusleiste und speichert diese als
UIImage
Den zweiten Teil fügt der Schnappschuss -
UIView
zu meiner viewController istUIView
Und der Dritte Teil setzt meiner bool für die statusbar auf " JA " (für eine einfachere Verwendung in der Methode oben), und ruft Methoden neu zu zeichnen, es
Dieser legt dann die UIView als nicht-funktionale statusbar an seinen Platz und versteckt das original, so dass es keine Doppel-rendering. Dann kann ich diese Ansicht verwenden, in meinem
[UIView animateWithDuration...
MethodeUnd wenn ich zurückkomme, ich verwende diesen code in der completion-handler der animation block:
- Und voilá! Dies funktioniert wie der beschriebene Effekt in meiner Frage.
Hoffe, das hilft jemand!
Sie haben absolut Recht! Irgendwie funktioniert auf dem simulator, aber nicht auf einem tatsächlichen Gerät. Aber ich war nicht in der Lage, fügen Sie den Schnappschuss als Untersicht und bewegen Sie es danach, da schien es, es ändert sich nach einiger Zeit...
Was ist der Zweck der
[self prefersStatusBarHidden];
im code, denn du machst nichts mit dem Rückgabewert? Und warum tun Sie haben zu tun[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
statt nur[self setNeedsStatusBarAppearanceUpdate]
? Wenn Ihr code funktioniert nicht ohne diese Zeilen würde ich eher zurückhaltend sein, um es in einer app, wie es wäre wahrscheinlich zu plötzlich aufhören zu arbeiten mit einer neuen iOS-Version.Ich habe das überschreiben der Methode prefersStatusBarHidden, die jetzt ein boolean zurückgibt - prefersStatusBarHidden (jetzt, dass ich es sehe, ist es eher seltsam, dass ich genannt Sie auf die gleiche Weise!). Über die Auswahl - ich bin mir nicht wirklich sicher, ist es vielleicht einen Hinweis auf die viel Feinabstimmung und ändern ein wenig so ist der ganze Effekt funktionieren würde.
InformationsquelleAutor Gyfis
Ich mit dieser Methode verschieben statuebar mit Schieberegler-Ansicht in einer Anwendung gibt es zwei Fenster,ein normales Fenster,andere statuBarWindow,bekomme ich statuBarView die superView ist statuBarWindows ,und bewegen Sie es mit der slider-Ansicht.
Schön obfuscated 😉
InformationsquelleAutor signal
Ich gerade erstellt BSPanViewController, die macht es extrem einfach, um diesen Effekt zu erzielen. Die Kontrolle und Anweisungen, wie es sein kann,gefunden auf GitHub.
Die Durchführung ist die gleiche wie die erklärt von Simon Holroyd.
InformationsquelleAutor simonbs
Meiner Erfahrung nach, die App Store Rezensenten in der Regel nicht über die private API ' s verwenden, insbesondere diese einfach und ungefährlich.
Für die Aufgabe können Sie einen Zeiger auf Antrag der status bar anzeigen durch verschiedene Methoden, die Sie hier finden können in iOS kompletten Header wie https://github.com/nst/iOS-Runtime-Headers
InformationsquelleAutor note173