tableHeaderView auf der Oberseite der ersten Zelle
Ich versuche zum erstellen einer tableview programmgesteuert, der ein search-bar in der tableHeaderView. Für einige Grund die Suchleiste erscheint oben in der ersten Zelle.
Ich bin mit Mauerwerk zu bauen-Einschränkungen.
Kann mir jemand zeigen was ich falsch mache.
- (void)setupViews {
...
self.tableView = [[UITableView alloc] initWithFrame:CGRectZero];
[self.view addSubview:self.tableView];
self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectZero];
self.tableView.tableHeaderView = self.searchBar;
...
}
- (void)updateViewConstraints {
[self.searchBar mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.equalTo(self.view);
make.height.equalTo(@(44));
}];
[self.tableView mas_updateConstraints:^(MASConstraintMaker *make) {
make.self.top.equalTo(self.view);
make.self.bottom.equalTo(self.toolbar.mas_top);
make.width.equalTo(self.view);
}];
...
}
Hier können Sie sehen, dass der header auf der gleichen Ebene wie die Zellen.
- Schön. +1 für die visual
- Überprüfen Sie zunächst Ihre Tabelle-Ansicht Y-position. Kann sein, dass Ihre TableView-Header wird Hinter Ihrer Navigationsleiste. Und check-header tatsächlich erstellt oder nicht?
- Ich habe ein kleines video gemacht, so dass Sie sehen können, dass die tableview nicht hinter der Navigationsleiste. youtube.com/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verlängerung in Swift 3.0
Danke für Eure Hilfe, ich fand ein gist auf GitHub, die Sprach über das ändern der Größe von tableViewHeader mit AutoLayout:
https://gist.github.com/andreacremaschi/833829c80367d751cb83
Wenn ich diese Methode aufrufen, während updateViewConstraints, dann funktioniert es.
Ich jedoch nicht ganz verstehen.
Ich denke, das problem liegt daran, dass Sie mit
autolayout
und setzen frames, um die Ansichten manuell, ersetzen Sie diesen code:mit so etwas wie dies:
Kann es nicht funktionieren, weil vielleicht
searchBar's
Rahmen muss manuell eingestellt werden, ohne Einschränkungen.Hier Problem bezüglich Raum zwischen table view-Header und table view Zelle. Sie können den Griff mit dem Attribut-Inspektor. Bitte überprüfen Sie, dass.
- wählen Sie UITableView
- Unter Attribut-Inspektor -> Scrollen Sie Ansicht Größe -> Inhalt-Einsätze, set-Top = 44 (oder je nachdem, was ist Ihre nav-bar-Höhe).
Oder Sie können damit umgehen, programmgesteuert.