Hide UINavBar und UITabBar gleichzeitig mit Animation

9

Bearbeiten : Ich habe John das Kopfgeld zugesprochen, da er sehr viel Mühe in seine Antwort gesteckt hat und es trotzdem bekommen würde, aber es gibt immer noch keine funktionierende Lösung. Ich bin immer noch auf der Suche nach einer Antwort, wenn jemand weiß, wie man das macht, würde es sehr geschätzt werden.

Ich möchte meiner App eine Schaltfläche "Maximieren" hinzufügen, mit der die Navigations- und Tab-Leiste ausgeblendet wird. Die Navigationsleiste und die Tableiste sollten gleichmäßig ein- und ausgefahren werden, und die innere / Inhaltsansicht sollte ebenfalls mit der gleichen Geschwindigkeit wie die Navigationsleiste und die Tableiste erweitert und verkleinert werden.

Ich habe [self.navigationController setNavigationBarHidden: YES/NO animated: YES]; für die Navigationsleiste verwendet und diesen Thread gefunden, um uitabbarcontroller zu verbergen Versteckt die Tableiste.

UITabBar-Klassenerweiterung:

%Vor%

Das Problem ist, wenn ich die zwei gleichzeitig benutze (die Navigations- und Tab-Leiste verdeckend / zeigend), ist es nicht sauber. Wenn die Navigationsleiste zuerst kommt, springt alles, was an der Unterseite verankert ist (siehe Beispiel unten), und wenn die Navigationsleiste zuerst kommt, springt die Spitze.

Beispiel: Ich positioniere die UIB-Taste unten rechts und setze ihre Autorisierungsmaske

%Vor%

Aber wenn die Navigationsleiste und die Tableiste minimiert sind, springt die UIB-Taste zwischen den beiden Zuständen (gleitet nicht mit der Tab-Leiste). Wenn ich es jedoch so ändere, dass es oben rechts angebracht wird, gleitet es perfekt mit der Navigationsleiste.

Weiß jemand, wie man das löst?

Bearbeiten : Dies ist der Schrank und die eleganteste Lösung, die ich bisher hatte (nur um ein funktionierendes Konzept zu bekommen):

%Vor%

Beim Maximieren:

  • Verschiebt die Navigationsleiste nach oben und gleichzeitig die Tableiste nach unten
  • Der obere Teil der inneren / Inhaltsansicht wird nach oben und der untere Teil dieser Ansicht nach unten verschoben

Beim Minimieren:

  • Verschiebt die Navigationsleiste nach unten und verschiebt die Tableiste gleichzeitig nach oben.
  • Der obere Teil der inneren / Inhaltsansicht rutscht korrekt herunter, aber der untere springt zum endgültigen Wert und lässt Whitespace zurück, der dann von der verschiebbaren Tableiste
  • abgedeckt wird

Wenn ich die Reihenfolge der Minimierungsanimationen neu anordne (so wird das Animationsfeld zuerst aufgerufen), springt das Top in der inneren / Inhaltsansicht

    
Raekye 11.06.2013, 05:20
quelle

3 Antworten

6

Die Lösung, die ich verwende, sollte das Sprungproblem beseitigen, das Sie sehen.

Diese Lösung wird von einer Objective-C-Kategorie abgeleitet, die Carlos Oliva gefunden hat Github-Seite , und während das Urheberrecht in diesem Code "alle Rechte vorbehalten" ist, schrieb ich ihn und er gab die Erlaubnis zur Verwendung.

Mein Kategoriencode unterscheidet sich nur geringfügig von seinem Code. Außerdem finden Sie unterhalb des Kategoriencodes den Aufrufcode, den ich in meiner App verwende.

von UITabBarController + HideTabBar.m

%Vor%

von meinem ScrollableDetailImageViewController.m

%Vor%     
john.k.doe 15.06.2013 18:51
quelle
-1

Probieren Sie diesen Code, wenn es funktioniert. Ich habe diesen Code ein Jahr zuvor geschrieben. Aber es funktioniert immer noch gut für mich.

Ich habe die blockbasierten Animationen nicht verwendet. Weil es geschrieben wurde, als ich neu in iOS bin. Versuchen Sie einfach, sich selbst zu optimieren, wie Sie es wollten.

%Vor%     
Dinesh Raja 20.06.2013 06:59
quelle
-2

Probieren Sie dies

aus

Sie können den Tabbar Contrler und die Navigationsleiste mit Animationen wie: -

ausblenden %Vor%     
Ravindhiran 14.06.2013 07:03
quelle