hidesBarsOnSwipe nie zeigt navbar wieder beim scrollen bis
So, ich möchte zum ausblenden der Navigationsleiste beim scrollen nach unten und bringen Sie es zurück, wenn das scrollen nach oben. Versteckt es funktioniert perfekt mit
self.navigationController?.hidesBarsOnSwipe = true
Aber ich erwarte, dass es wieder angezeigt werden, wenn das scrollen nach oben. Ich machte ein test-Projekt, bei dem die view-controller nur einen einzigen UICollectionView, die den gesamten Bildschirm erstreckt. Dann zeigt die navbar wieder gezeigt wird, wie erwartet, bis ich diese Zeile in die viewDidLoad (hinzufügen von Zellen zu der Ansicht Sammlung):
self.collectionView.delegate = self
Und das ist, was die ganze view-controller sieht aus wie
class ViewController: UIViewController,UICollectionViewDataSource, UICollectionViewDelegate {
@IBOutlet var collectionView: UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
self.collectionView.dataSource = self
self.collectionView.delegate = self
self.collectionView.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: "Test")
self.navigationController?.hidesBarsOnSwipe = true
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 3
}
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
return collectionView.dequeueReusableCellWithReuseIdentifier("Test", forIndexPath: indexPath) as UICollectionViewCell
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
return CGSizeMake(300, 300)
}
}
Also warum zeigen die navbar aufhören zu arbeiten, wenn ich das hinzufügen von Zellen zu meine Sammlung sehen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem, aber mit einem web-Ansicht.
Das problem war, dass die top-Einschränkung der web-Ansicht war "Top Layout Guide.Top" , nach dem ändern der top-Einschränkung "Superview.Top" war das problem gelöst.
Erweitern Oleg ' s Antwort...
Wenn Sie Interface Builder, um eine Beschränkung auf einen view-controller den primären anzeigen, Xcode standardmäßig mit Optionen zum einstellen der vertikalen Einschränkung gegen die top layout guide. Jedoch, wenn Sie die Taste 'Option', Sie werden sehen, einen anderen Satz von Einschränkungen. Die Einschränkung für "Top-Platz zum Container' ist das, was du bist suchen für.
Ich habe versucht, hidesBarsOnSwipe-Eigenschaft auf true in meiner ViewController-Klasse in ViewDidLoad-Funktion, wie unten angegeben, aber es hat nicht funktioniert in der Handhabung ausblenden der Navigationsleiste auf swipe-up-und einblenden der Navigationsleiste auf swipe-down.
Einstellung hidesBarsOnSwipe zu wahren sind nur wirksam, wenn wir mit den UITableViewController oder UICollectionViewController als Haupt-Bildschirme, hidesBarsOnSwipe wird nicht funktionieren, wenn wir Hinzugefügt haben, einen UITableView der UIViewController für die Anzeige der Liste der Daten.
Lösung
Hoffe, dass diese Antwort helfen könnte...!
Hatte ich dasselbe Problem. Wenn ich den code Hinzugefügt für das ausblenden der status bar navigation bar, es hat funktioniert.
Legte ich einen bug-report bei Apple und endete mit AMScrollingNavbar statt, die funktioniert wirklich gut und ist einfach einzurichten.
Gemäß der vorherigen Kommentare - das scheint ein bug von ios 10.3
als Sie mit einem uicollectionview - ich möchte Ihre Aufmerksamkeit auf einige code, den ich neu geschrieben von APDynamicHeaderTableViewController
https://github.com/aaronpang/APDynamicHeaderTableViewController/issues/4
Es ist mit snapkit https://github.com/SnapKit/SnapKit
(Entschuldigung an alle IB + NSLayout Einschränkung Liebhaber.)
Machen
hidesBarsOnSwipe
ordnungsgemäß funktioniert, können Sie Ihre view-controller istview
darf nurUITableView
Instanz und sonst nichts.