Verwenden von Autolayout in einer tableHeaderView
Ich habe einUIView
Unterklasse, die ein mehrzeiliges @ enthäUILabel
. Diese Ansicht verwendet Autolayout.
Ich möchte diese Ansicht als @ festlegtableHeaderView
einesUITableView
(nich eine Abschnittsüberschrift). Die Höhe dieser Kopfzeile hängt vom Text des Etiketts ab, der wiederum von der Breite des Geräts abhängt. Die Art von Szenario-Autolayout sollte großartig sein.
Ich habe @ gefunden und versucviel viel solutions, um dies zum Laufen zu bringen, aber ohne Erfolg. Einige der Dinge, die ich ausprobiert habe:
ein @ setzpreferredMaxLayoutWidth
auf jedem Etikett währendlayoutSubviews
defining anintrinsicContentSize
Versuch, die erforderliche Größe für die Ansicht zu ermitteln und das @ festzulegtableHeaderView
's Rahmen manuell.der Ansicht eine Breitenbeschränkung hinzufügen, wenn der Header gesetzt ist ein paar andere DingeEinige der verschiedenen Fehler, auf die ich gestoßen bin:
label geht über die Breite der Ansicht hinaus, wird nicht umbrochen Rahmenhöhe ist 0app stürzt mit Ausnahme von @Auto Layout still required after executing -layoutSubviews
Die Lösung (oder Lösungen, falls erforderlich) sollte sowohl für iOS 7 als auch für iOS 8 funktionieren. Beachten Sie, dass dies alles programmgesteuert erfolgt. Ich habe ein @ eingerichtsmall sample project für den Fall, dass Sie es hacken möchten, um das Problem zu sehen. Ich habe meine Bemühungen auf den folgenden Startpunkt zurückgesetzt:
SCAMessageView *header = [[SCAMessageView alloc] init];
header.titleLabel.text = @"Warning";
header.subtitleLabel.text = @"This is a message with enough text to span multiple lines. This text is set at runtime and might be short or long.";
self.tableView.tableHeaderView = header;
Was vermisse ich