iOS entwirft UITableViewCell mit anpassbarem Inhalt

9

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:

  • Äußeres Layout: UITableViewCell
  • Rotes Layout: Eine eigenständige .xib UIView mit einer einzelnen UIView
  • Blaues Layout: Das innere Layout. Einige davon sollten in einem einzelnen roten Layout übereinander liegen können, wie in der zweiten Zelle beschrieben.

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.

    
Falgantil 19.06.2015, 09:07
quelle

3 Antworten

0

verwende dies

%Vor%     
Ankit Sachan 19.06.2015 10:00
quelle
0

Nun. Sie können das gewünschte Layout mit der Methode

erreichen
  1. Fü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.

  2. 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)

  1. Wenn die Höhe jeder xib dynamisch ist, dann berechne

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.

    
prakash hadapad 03.09.2015 21:19
quelle
0

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

definieren     
albilaga 21.04.2016 18:18
quelle

Tags und Links