2016-11-28 6 views
1

Also was ich versuche zu erreichen ist, ich möchte eine Sicht zwischen einer Tabellenansicht und der Navigationsleiste hinzufügen. Die Hierarchie würde wie folgt aussehen: Top-NavigationBar-zwischenView-tableView-Bottom.Wie füge ich eine Ansicht zwischen Tabellenansicht und Navigationsleiste hinzu?

Ich habe so etwas versucht, aber die betweenView geht nicht unter der Navigationsleiste, und die TabelleView hat eine seltsame Leerzeichen darüber. Hat jemand eine Idee? Vielen Dank!

let betweenView = searchController.searchBar 

    self.view.addSubview(betweenView) 

    let upperConstraint = NSLayoutConstraint(item: betweenView, attribute: .top, relatedBy: .equal, toItem: self.tableView, attribute: .top, multiplier: 1, constant: (self.navigationController?.navigationBar.frame.height)!) 
    let lowerConstraint = NSLayoutConstraint(item: self.tableView, attribute: .top, relatedBy: .equal, toItem: searchView, attribute: .bottom, multiplier: 1, constant: 0) 

    self.view.addConstraint(upperConstraint) 
    self.view.addConstraint(lowerConstraint) 
+0

@ Essence of chicken Das Problem der Tabellenansicht Kopfzeile ist es scrollt mit der TableView, die ich möchte die Zwischenansicht an der Spitze. Ich benutze tatsächlich einen UIViewController und löschte bereits eine Tabellenansicht, aber die Einschränkung verhält sich nicht wie ich will, das ist, was ich frage. Danke für Ihren Kommentar obwohl!: D –

Antwort

0

Sie wollen hier zwei Dinge tun:

1) Layout die Einschränkung für die Suche nach oben Layout Führung. Dies wird Ihre Suche unterhalb der Navigationsleiste auf einer Pro-Bedarf Basis bewegen:

let upperConstraint = NSLayoutConstraint(item: searchView, attribute: .top, relatedBy: .equal, toItem: topLayoutGuide, attribute: .bottom, multiplier: 1, constant: 0) 

2) Sie müssen sicherstellen, dass sich die Tabelle nicht automatisch das Scrollen auf die Navigationssteuerung einstellen:

tableView.automaticallyAdjustsScrollViewInsets = false 
+0

Vielen Dank für Ihre Antwort. Ich habe versucht Ihre Lösung, die ich habe die Constraint "toItem" in den TopLayoutGuide geändert, aber die Zwischenansicht ist immer noch nach der Navigationsleiste aus irgendeinem Grund versteckt :(Ich verstehe einfach nicht, warum die ZwischenView an der Spitze von bleiben müssen der Bildschirm, anstatt unter der Navigationsleiste zu gehen. –

+0

Haben Sie sichergestellt, dass das .bottom-Attribut im Layout-Handbuch verwendet wird? Hier ist ein Beispiel, das Sie in einen Spielplatz einfügen können, um die Arbeit zu sehen: https://gist.github.com/ pixelrevision/6482661045002868cf0ba3ad8ec264a1 – pixelrevision

Verwandte Themen