web-dev-qa-db-ger.com

Blenden Sie beim Scrollen den großen Titel aus

Ich habe einen normalen Ansichtscontroller, der in einen Navigationscontroller eingebettet ist. In diesem Ansichtscontroller habe ich eine Tabellensicht, die die Einschränkungen des sicheren Bereichs verwendet. (Ich benutze keinen Table View Controller)

Der Navigationscontroller ist so eingestellt, dass er große Titel bevorzugt, und der Modus ist auf "Immer" eingestellt. In Beta 2 klappte das perfekt. Als ich in den Titel kam, war der Titel groß und beim Scrollen nach unten wurde er klein (wie der normale). Aber seit Beta 3 funktioniert das nicht mehr.

Jeder weiß, wie man das wieder einschaltet oder wie man es so macht, dass ich beim Scrollen der Tabellenansicht kleiner werde. Wie das Verhalten aller neuen iOS 11-Apps? 

Oder ist dies ein Fehler in der aktuellen Version von Swift 4/iOS 11, aber die Apps wie Messenger und Einstellungen funktionieren immer noch auf diese Weise.

Danke im Voraus.

11
Jippe Joosten

Für mich war es so, dass wenn Sie im Storyboard den booleschen Wert "Prefers Large Titles" auf true setzen, der Wert groß bleibt. Wenn Sie dies per Code aktivieren, funktioniert es wie erwartet!

20
Jippe Joosten

Ich habe auf dieser Site eine Problemumgehung gefunden. Wenn im Grunde die tableView (oder das Element mit Scrollfunktion) nicht die erste Ansicht in Ihrer Ansichtshierarchie ist, wird der große Titel nicht automatisch ausgeblendet.

Beispiel, das NICHT funktioniertBeispiel, das funktioniert

https://markusbodner.com/2017/10/08/fix-large-navigation-bar-title-not-hiding-on-scroll-in-ios-11/

Ich habe in der Ansicht willAppear hinzugefügt:

        if #available(iOS 11.0, *) {
        navigationController?.navigationBar.prefersLargeTitles = true
    } else {
        // Fallback on earlier versions
    }
6
Sergio Trejo
(void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (scrollView.contentOffset.y > 0) { //20
        [self.navigationController.navigationBar setPrefersLargeTitles:NO];
    } else {   
        [self.navigationController.navigationBar setPrefersLargeTitles:YES];
    }    
}
1
pideni

Ich verwende ein programmatisches Layout und stieß bei großen Titeln auf ein ähnliches Problem. Ich habe die Lösung hier gefunden: https://stackoverflow.com/a/46692583/131378 . In viewDidLoad() musste ich die largeTitleDisplayMode aus- und wieder einschalten. Das war die richtige Kombination, die die großen Titel zum Scrollen brachte:

self.navigationItem.largeTitleDisplayMode = .never
self.navigationItem.largeTitleDisplayMode = .always
0
Mark Suman

Aktivieren Sie " bevorzugt große Titel " für Ihre Navigationsleiste in IB oder verwenden Sie:

navigationController?.navigationBar.prefersLargeTitles = true
0
Nemanja