Schrumpfen Sie große Titel beim scrollen (nicht UITableViewController) iOS 11
Bekam ich einen View-Controller, eingebettet in eine Navigations-Controller mit bevorzugt große Titel-option auf true festgelegt; innerhalb des View-Controllers gibt es ein Scroll-Ansicht.
Ich möchte die nav-bar verkleinern beim scrollen.
Wie konnte ich das Archiv?
XCode 9, Swift 4, iOS 11
- Meinst du, sich zu verstecken oder normale Größe?
- Ich meine normalen Größe
- Ich weiß es nicht. Aber überprüfen Sie dies, bevor Sie versuchen mit
UIView
animation rückgängig zu machen und größere Titel? - Das funktioniert nur für Tabellen-view-Controller
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich nicht erreicht, dass es funktioniert mit Hilfe eines UIScrollView aber ich archiviert, dass es funktioniert mit anderen ViewControllers mit einem UITableView als ersten Blick.
Wenn der tableView ist nicht der erste Blick, die großen Titel versagt zu verstecken, automatisch. Sie wahrscheinlich benötigen, um sicherzustellen, dass Ihre tableView ist das erste element in der Hauptansicht die Untersichten array.
Ich hoffe, dass dies Ihr problem löst.
Haben Sie versucht, so etwas wie das? Es konvertiert die große Titel-Anzeige-Modus, wenn der Inhalt gescrollt wird bis.
UITableViewController
imUINavigationController
. Dies erlaubte mir, beide: (1) die Anzeige einerUINavigationBar
und (2) die Darstellung einer großen Titeln (automatisches einstellen der scroll-gesten) mitnavigationController?.navigationBar.prefersLargeTitles = true
.UIViewController
mit einer verschachteltenUINavigationBar
undUITextView
für das scrollen von Inhalten, sollten Sie erwägen, zusätzlicheUIScrollViewDelegate
Methoden wiescrollViewWillBeginDragging(_:)
,scrollViewDidScroll(_:)
, undscrollViewDidScrollToTop(_:)
zu aktualisierenlargeTitleDisplayMode
mehr oft. Halten Sie im Verstand,UITextViewDelegate
erbt vonUIScrollViewDelegate
so haben Sie Zugang zu allen die superclass-Methoden. Denken Sie daran, die Delegierten in Ihrer view-controller mit einem Ausgang von derUITextView
mittextView.delegate = self
imviewDidLoad()
Einstellung prefersLargeTitles im code hat Arbeit für mich machen die NavBar title schrumpfen und wachsen, wie Sie Blättern. Ich habe bemerkt, wenn Sie die Immobilie durch InterfaceBuilder, die verkleinern-Funktion nicht funktioniert.
Statt im code festgelegt wie
Dieser Weg ist für mich gearbeitet.
ich folgte diesen Schritten:
1 - Bewegen Sie den TableView nach oben auf der Liste (unter sicherer Bereich) in view-controller-Szene.
2 - Machen FirstView und Geladen FirstViewContoller.
Der screenshot von der Lösung
Ich hatte das ähnliche problem, war wegen der vielen
UIScrollView
-based view inside-view-controller und ich war scrollen nicht der erste in der Hierarchie. Einmal ist es nur eine, es funktioniert gut mitUIScrollView
,WKWebView
oderUITextView
ohne eine Zeile code.Habe ich etwas benutzt, das ähnlich Kamil Szostakowski's Antwort für die Ansicht mit UICollectionView.
Es kann sein, nicht so glatt, aber ich habe nicht gefunden, eine bessere option noch.
Ich verwendet dsk1306 Lösungen, siehe oben. Aber in meinem Fall hatte ich eine WebView in der UIViewController mit dem großen Titel.
So, ich hatte um die UIWebView ScrollView delegieren:
und
Probieren Sie etwas wie dieses:
Getestet habe ich mit dem storyboard-Ansatz, es funktioniert. Stellen Sie sicher, dass der scrollView & es ist Untersichten Einschränkungen.
Hier mit der Probe XCode Projekt Referenzen: https://github.com/DazChong/LargeTitleShrinkOnScrollView
Wenn u haben problem Zusammenbruch root navigationBar aus vorgestellt VC scrollView, können versuchen, diese:
Hinzufügen UIScrollView zu RootVC. Wichtig - UIScrollView muss der root-view(bei index 0).
In presentedVC wir können scrollViewDidScroll und setzen Sie den offset auf unserem root UIScrollView.
sehen hier mit gif und code
RootVC view-Hierarchie:
screenshot (sorry für link, nicht genug reputation)
in presentedVC versuchen, diese
Müssen Sie:
Pin-scroll-Ansicht von oben super Aussicht oben
Hinzufügen