Ich habe seit einigen Tagen mit diesem Thema herumgespielt, und ich kann es nicht richtig verstehen.
Ich versuche, ein UITableView zu erstellen, das dem folgenden Modell ähnlich aussehen sollte:
Dies ist, soweit ich das beurteilen kann, der optimale Weg, dies auf der Benutzeroberfläche zu definieren. Allerdings kann ich nicht die Höhe der Zelle (für die GetHeightForRow-Methode) zu bekommen, egal was ich versuche.
Laden und Hinzufügen der Ansichten ist nicht das Problem, das Problem ist, nachdem sie geladen sind, um die verschiedenen UI-Elemente mit Daten zu füllen und die Größe von ihnen zu erhalten.
Ich habe versucht, SizeToFit zu verwenden, aber die einzigen Elemente, auf die es zu wirken scheint, sind UILabels. Selbst wenn sich der UILabel-Rahmen auf etwa 300 Height ändert und ich SizeToFit auf der Benutzeroberfläche anrufe, die das Label enthält, bleibt es (die UIView) immer noch bei 320x100. Was bedeutet, wenn es gerendert wird, sieht es ganz falsch aus.
Die Art, wie ich die Höhe zu berechnen versuche, ist sehr ähnlich wie Punkt 4 auf der akzeptierten Antwort in Ссылка . Das heißt, eine einzelne Zelle im Speicher erstellen und für jede Zeile mit Daten füllen und dann die Höhe für diese Zelle abrufen.
Nun. Sie können das gewünschte Layout mit der Methode
erreichenFügen Sie jeder Zelle eine ContentHolderview hinzu und pingen Sie alle Seiten von ContentHolderView mit der Zelle ContentView, indem Sie VFL (Visual Format language) programmatisch verwenden.
Jetzt können Sie alle innerhalb eines anderen Programms mit VFL stapeln.
3.In der heightForRowIndex-Delegate-Methode, wenn die Höhe jedes xib-Elements fest ist, dann Rückgabewert (der die Summe aller xib-height ergibt und während der Konfiguration jeder Zelle berechnet werden muss)
Höhe jedes Elements durch folgende Methode beim Konfigurieren der Zelle.
GSize Einschränkung = CGSizeMake (200, 20000.0f); CGRect rect = [Celltext boundingRectWithSize: Einschränkung Optionen: (NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading) Attribute: @ {NSFontAttributeName: [UIFont systemFontOfSize: 14]} Kontext: Null]; CGFloat height = rect.size.height;
Sie müssen die Gesamthöhe jeder Zelle ermitteln, indem Sie dieselbe Logik für jede Unteransicht anwenden.
Da ich in Ihrem Kommentar gelesen habe, dass Sie unterhalb von iOS 8.0 keine Unterstützung benötigen, müssen Sie die Zeilenhöhe nicht manuell angeben. Sie können es einfach so machen und wenn Sie AutoLayout verwenden, wird Ihre Layouthöhe automatisch angepasst.
%Vor%Und ist das blaue Layout in der roten Xib? Ich benutze xib nie zuvor, aber für die Verwendung von Auto Layout müssen Sie den unteren und oberen Rand in Zelle
definierenTags und Links c# uitableview ios design xamarin