Wie setze ich die automatische Höhe der statischen Zelle in UITableViewController?
Ich bin mit IB und storyboard und ich UITableViewController
. Dort habe ich definiert drei statische Zellen. Die ersten zwei sollten eine bestimmte Höhe, aber die letzten sollte man automatisch füllen Sie den verbleibenden Platz (Anker, um den unteren Rand der Ansicht). Wie kann ich das erreichen? Kann ich verwenden, autolayout für die Steuerelemente innen der Zelle, aber es ist ausgegraut, für die Zelle selbst.
Die beste Lösung wäre, um dies zu tun, von IB aber programmatische Lösungen sind auch willkommen.
EDIT:
Dies ist, wie es aussieht in meinem storyboard (die Farben werden bei der Visualisierung separate Steuerelemente jedes Steuerelement hat die erforderlichen Einschränkungen):
Und nach dem Start:
Beachten Sie, dass die text-Ansicht endet unterhalb der unteren Rand des Bildschirms.
Ich vergaß zu erwähnen, dass ich Ziel-iOS 7.0+.
InformationsquelleAutor der Frage bpiec | 2015-03-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok versuchen Sie, diese
Das einzige, was ein problem sein könnte ist, dass diese Methode wird ausgeführt, bevor der view-sets der tableView Höhe
InformationsquelleAutor der Antwort Christos Hadjikyriacou
Können Sie tatsächlich nutzen
UITableViewAutomaticDimension
mit statischen Zellen. Gestalten Sie Ihre statische Zellen pro gewohnt und legen Sie manuell Ihre Zellen als dynamische Höhen durch hinzufügenNun überschreiben Sie die
heightForRow
delegierenDie einzige andere Einschränkung, die ich bemerkt, die mit dieser Technik ist, dass Sie verwenden müssen
NSAutolayout
zu erstellen, die eine Einschränkung auf den unteren container (dieUITableViewCell
's container). Also lassen Sie uns sagen, Sie haben einen Behälter im inneren der Zelle contentView verfügen, die eine dynamische Höhe, für die dieser ordnungsgemäß gerendert, müssen Sie erstellen eine Boden-Raum-Einschränkung.Wenn Sie einige statische Zellen, haben einen festen Höhen empfehle ich Rückkehr, die Größe, die durch Wechsel auf Zeile in
tableView:heightForRowAtIndexPath:indexPath
InformationsquelleAutor der Antwort Ryan Romanchuk
Werden sicher, überschreiben heightForRowAtIndexPath! Sonst wird es nicht richtig angezeigt von meinen Erfahrungen
InformationsquelleAutor der Antwort Mat0
Bedeckte ich dies in einem blog-post mit einer statischen Tabelle anzeigen und Einstellung der Höhe der Zelle mit "auto-layout". Die Zellen sind alle definiert im interface builder.
Haben Sie zum aktivieren der automatischen Höhe der Zelle in code-aber das ist nur ein paar Zeilen.
Zeige ich alles, einschließlich IB und code.
Werfen Sie einen Blick
http://www.oliverfoggin.com/using-a-static-uitableview-as-a-layout-device/
InformationsquelleAutor der Antwort Fogmeister
Wenn das ganze tableview cell Höhe dynamisch ist, dann können Sie versuchen, diese
oder eine tableview muss einige Feste Höhe der Zelle & einige dynamische Höhe der Zelle, die Sie der Kasse die Antwort
Dynamische & statischen tableview cell Höhe
Hoffe, es hilft.
InformationsquelleAutor der Antwort Riajur Rahman
Nicht sicher, von IB und mit dem Autolayout
Aber mit programmatisch,
Mit dieser Methode u können für die Prüfung indexpath.Zeile. Und mit dieser Rückkehr die unterschiedliche Höhe.
InformationsquelleAutor der Antwort svrushal
Für statische (non-data-driven) Höhe, können Sie einfach entfernen Sie die Zelle einmal und speichern Sie die Höhe:
InformationsquelleAutor der Antwort Tanuj
Ryan Romanchuk s Antwort ist Super. Ich habe einen Tipp, die helfen können Anfänger wie mich.
Da dies eine statische Zelle Fall, könnten Sie geneigt sein, zu verwenden
IBOutlet
für jedes dynamische Feld. Einstellen der Werte in sagenUILabel
außerhalbtableView
laden Zyklus wird nicht die neue Höhe berücksichtigt.Erlauben die dynamische Höhe zu arbeiten, ordnen Sie die Werte überschrieben
cellForRowAtIndexPath
so delegieren, dass autolayout abholen können Sie die neue Höhe. Rufen SietableView.reloadData()
wenn Sie möchten, aktualisieren Sie die Felder.InformationsquelleAutor der Antwort Baron Ch'ng