Dynamische Höhe von tableView

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Dynamische Höhe von tableView

    Hallo zusammen,

    in einem ViewController habe ich ein scrollView. Der hat Constraints 0,0,0,0 zum VC.
    Im scrollView ist neben ein paar Views auch eine tableView. Alles verpackt in verschiedenen StackViews. Für die tableView habe ich eine Cell für den reuse - die Cell hat eine dynamische Höhe und im Code auch den Eintrag:

    Quellcode

    1. tableView.estimatedRowHeight = 70
    In der Cell ist ein Label mit der Einstellung

    Quellcode

    1. textlabel.numberOfLines = 0
    damit auch längere Texte immer ganz angezeigt werden. In der extension tableViewDataSource habe ich folgendes stehen:


    Quellcode

    1. let reihen = comments.count
    2. tableViewHeight.constant = CGFloat(reihen * 70)
    Dazu gibt es für die Constraint auch ein Outlet


    Quellcode

    1. @IBOutlet weak var tableViewHeight: NSLayoutConstraint!
    Mein Problem ist nun, dass die Höhe der tableView dynamisch sein muss - je nachdem wie hoch die einzelnen Cells sind.



    Setze ich die Höhe der Cell auf z.B. fixe 70px passt die Höhe der tableView immer so, dass man nur das scrollView scrollen kann - so wie es sein sollte. Dann ist aber der Text in der Cell evtl. abgeschnitten. Bleibe ich bei dynamischer Höhe müsste ich irgendwie die Höhe der Cell jeweils dazu addieren.

    Ziel soll es sein, dass der User das scrollView scrollt und gleichzeitig auch - weiter unten wenn sie kommt - die tableView - damit kein zweifaches scrollen erforderlich ist ( man kennt das noch von früher wenn man auf einer Internetseite Frames hatte ….

    Für Ideen, Links und / oder Codebeispiele bin ich sehr dankbar.

    VG und bleibt alle gesund,
    Steffe
  • Evtl. ist es einfacher die UI Elemente aus dem View Controller, die sich oberhalb des Table View befinden, als Header View in den Table View zu packen. Den zusätzlichen Scroll View kannst Du Dir dann sparen.

    Wenn es auch noch UI Elemente unterhalb des Table View gibt, dann kannst Du diese als Footer View in den Table View packen.
  • Hallo zusammen,

    ich habe das Problem gelöst.

    Ich habe eine CocoaTouchClass als Subklasse von UITableView erstellt und diese beiden overrides eingefügt.

    Quellcode

    1. class TableViewAutoHeight: UITableView {
    2. override var contentSize: CGSize {
    3. didSet {
    4. invalidateIntrinsicContentSize()
    5. setNeedsLayout()
    6. }
    7. }
    8. override var intrinsicContentSize: CGSize {
    9. let height = min(.infinity, contentSize.height)
    10. return CGSize(width: contentSize.width, height: height)
    11. }
    12. }
    Alles anzeigen
    Dann noch sicherstellen, dass keine Constraints für die tableView gesetzt sind und es klappt!
    @MCDan trotzdem danke für die Info und die Mühen!