2015-06-22 4 views
5

Ich habe ein UITableView, ich bin tableFooterView geladen von einem Xib.Wie setze ich die Höhe zu einem TableFooterView geladen von einem xib

var footer = NSBundle.mainBundle().loadNibNamed("AFooterView", owner: self, options: nil).first as! AFooterView 
self.tableView.tableFooterView = footer 

Das funktioniert gut, aber ich muss in der Lage sein, die Höhe für diese Fußzeile festzulegen. Die Xib hat nur eine UIImageView, die vertikal und horizontal zentriert ist, so dass sie sich anpassen kann, egal wie hoch die Ansicht ist.

Ich habe keine Ahnung wie man das macht mit AutoLayout? Was wäre der richtige Weg?

+0

Sie könnten einen Auslass zu einer Einschränkung hinzuzufügen, die die Höhe der Ansicht verwaltet und es ändern Konstante, um die Größe zu sein, die Sie wollen - vor dem Zuweisen der 'tableFooterView' –

+0

Gibt es einen Grund, dass Sie nicht nur die Höhe der Fußzeilenansicht direkt in Ihrem Xib festlegen? – JJC

+0

Ich kann es nicht in der Xib setzen, weil die Höhe ändert, ich weiß nicht, wie man das mit Autolayout dynamisch macht ... @JJC – Andres

Antwort

7

Ich bin für die Verwirrung leid, hier ist die Antwort aktualisiert:

Ich weiß, dass Sie diese Höhe durch Setzen des Rahmens tun können, aber es könnte auch mit Auto-Layout nur durch die Neuzuweisung der Fußzeile arbeiten Ansicht, nachdem Ihr ImageView geladen wurde.

// either let auto layout calculate the frame, or set the frame yourself 
// I set the width to an arbitrary size but it doesn't seem to matter, 
// it will automatically be adjusted by the tableview when you assign it 
CGFloat width = 100; 
CGFloat height = 500; 
footerView.frame = CGRectMake(0, 0, width, height); 
// this is the "trick": re-assign the footerView after its size has been updated 
// so that the tableView will show it correctly 
tableView.tableFooterView = footerView; 

Weitere Informationen finden Sie Resizing a UITableView’s tableHeaderView

Die ursprüngliche Antwort zu Abschnitts Fußzeilen gesprochen, nicht Tabellenansicht Fußzeilen

+0

Sorry für die Verwirrung; Wenn Sie alle Einschränkungen bereits eingerichtet und berechnet haben (funktioniert auch, wenn Sie die Rahmenhöhe selbst festgelegt haben), weisen Sie die Fußzeilenansicht einfach der Tabelle zu. Die Tabelle erkennt, dass sie eine neue Fußzeile hat und das Layout, das für die richtige Größe der Fußzeile erforderlich ist, erneut ausführt: 'yourTableView.tableFooterView = yourFooterView;' – Velociround