1

Ich versuche, die Funktionalität in der Facebook für iOS App zu replizieren, wo die UISearchBar in der Navigationsleiste zwischen View-Controllern "geteilt" wird. Wenn Sie zum Beispiel auf die Suchleiste in der Home-News-Feed-Ansicht tippen, erscheint ein neuer View-Controller und die Suchleiste wird auf den neuen View-Controller übertragen. Die Größe des Suchbalkens wird in der Größe geändert und zusammen mit den View Controller-Übergängen animiert (auch bei Verwendung des Übergangs "interaktiver Pop", wie im folgenden Screenshot dargestellt). Dieses Verhalten wird auf verschiedene Arten in der App angezeigt. Gibt es eine Standardmethode, um dieses Verhalten in UIKit zu erreichen, oder wendet Facebook irgendwie benutzerdefinierte Übergänge/Animationen auf die Navigationsleiste und die Suchleiste an?UISearchBar in UINavigationBar zwischen UIViewControllern freigegeben

enter image description here

Antwort

0

Nachdem hatte ein schnelles Spiel mit ihm, ich würde zunächst sagen, dass der Hauptbildschirm in mehrere Teile aufgeteilt wird. Es ist schwer zu wissen, was diese Objekte sind, aber bei einer Vermutung würde ich sagen, dass sie einen UIViewController haben, der nur die Suchleiste und andere "Navigations" -Elemente enthält. Darunter befindet sich ein weiterer UIViewController, der den Newsfeed enthält, und das ist ein flexibler Raum, in dem verschiedene andere Dinge (benutzerdefiniert) vorkommen können. Beide werden wahrscheinlich als 'ChildViewControllers' in einem übergeordneten ViewController festgelegt. So können Sie z. B. mehrere UIViewControllers im Interface Builder auf denselben UIViewController-Bereich bringen.

Ihre Suchleiste selbst ist stark angepasst und basiert möglicherweise nicht einmal auf einer UISearchBar. Wahrscheinlich haben sie gerade eine vollständig benutzerdefinierte UIView mit einer UITextView zum Eintippen und vielen weiteren benutzerdefinierten Animationen erstellt. Dennoch können Sie mit einer UISearchBar viel von dem erreichen, was sie tun.

Auf diese Weise bleibt die Suchleiste dieselbe Suchleiste, während sich der Inhalt unten ändert. Wenn Sie beispielsweise eine Suche durchführen, erscheinen die Suchergebnisse unten, aber die gleiche UISearchBar bleibt oben sichtbar.

Ein alternativer Ansatz, den ich tun könnte, wenn ich keine ChildViewControllers (ich habe diese Methode) verwendet, wäre, einfach UIView-basierte Objekte innerhalb eines einzigen UIViewController zu verwenden. Also eine UISearchBar an der Spitze, wahrscheinlich in einem Elternteil UIView. Und eine weitere UIView unten, um den Feed und alles andere zu enthalten. Suchen Sie wiederum einfach mit der einzelnen UISearchBar und ändern Sie den Inhalt der UIView nach Bedarf.