2017-11-07 1 views
0

Wenn meine UITableViewCell-Zeilen angezeigt werden, kommen sie auf eine Höhe von 44. Das sollten sie definitiv nicht tun. Ich habe das gesamte obere Ende des Pfades eingeschränkt, wie Sie in den Warnungen zu schlechten Einschränkungen sehen können.Warum wird meine UITableViewCell-Zeile auf die Höhe 44 gezwungen?

Ignoriert man die Tatsache, dass es meine $ ballIsSquare $ height/width-Einschränkung nicht mag, sollte ich immer noch eine Zelle haben, die mehr als 44 in der Höhe ist. Es zeigt fast kreisförmige Bälle, was bedeutet, dass die Höhe fast 55 groß ist (da $ width $ als 55 angezeigt wird. Es zeigt jedoch nicht die Datumsbezeichnung, die über den Bällen liegt. Jede Idee, was die Zelle ist ?

view-Controller ist, spezifizieren eine geschätzte Zeilenhöhe von 100 für diese sein, so klein gezwungen, und die rowHeight wird auf UITableViewAutomaticDimension.

ich denke, die „UISV-alignment“ und UISV-Leinwand-Verbindung sind die Einschränkungen von der UIStackView, die verwendet wird ($ ballsBottom $ zum Beispiel bezieht sich auf die Bälle UIStackView)

Die UIView-Encapsulated-Layout-Höhe ist die, die scheint zu mir, um das wahre Problem zu sein.

"<NSLayoutConstraint:0x60400008d070 '$ballIsSquare$' DidIWin.BallView:0x7f8525a3fec0.height == DidIWin.BallView:0x7f8525a3fec0.width (active)>", 
    "<NSLayoutConstraint:0x604000091ad0 '$ballsBottom$' DidIWin.Balls:0x7f8525a3e890.bottom == UILayoutGuide:0x6040001a6c80'UIViewSafeAreaLayoutGuide'.bottom - 10 (active)>", 
    "<NSLayoutConstraint:0x604000086c70 '$ballWidth$' DidIWin.BallView:0x7f8525a3fec0.width == 55 (active)>", 
    "<NSLayoutConstraint:0x6040000928e0 '$largeDateBottom$' UILabel:0x7f8525a44510'10/4/17'.bottom == DidIWin.Balls:0x7f8525a3e890.top + 10 (active)>", 
    "<NSLayoutConstraint:0x604000092840 '$largeDateTop$' UILabel:0x7f8525a44510'10/4/17'.top == UILayoutGuide:0x6040001a6c80'UIViewSafeAreaLayoutGuide'.top + 10 (active)>", 
    "<NSLayoutConstraint:0x604000092020 'UISV-alignment' DidIWin.BallView:0x7f8525a3ead0.bottom == DidIWin.BallView:0x7f8525a3fec0.bottom (active)>", 
    "<NSLayoutConstraint:0x604000091f30 'UISV-alignment' DidIWin.BallView:0x7f8525a3ead0.top == DidIWin.BallView:0x7f8525a3fec0.top (active)>", 
    "<NSLayoutConstraint:0x60400008c670 'UISV-canvas-connection' DidIWin.Balls:0x7f8525a3e890.top == DidIWin.BallView:0x7f8525a3ead0.top (active)>", 
    "<NSLayoutConstraint:0x604000091c60 'UISV-canvas-connection' V:[DidIWin.BallView:0x7f8525a3ead0]-(0)-| (active, names: '|':DidIWin.Balls:0x7f8525a3e890)>", 
    "<NSLayoutConstraint:0x604000091da0 'UIView-Encapsulated-Layout-Height' DidIWin.FailureDetailCell:0x7f8526047200'failure'.height == 44 (active)>", 
    "<NSLayoutConstraint:0x604000091940 'UIViewSafeAreaLayoutGuide-bottom' V:[UILayoutGuide:0x6040001a6c80'UIViewSafeAreaLayoutGuide']-(0)-| (active, names: '|':DidIWin.FailureDetailCell:0x7f8526047200'failure')>", 
    "<NSLayoutConstraint:0x6040000918a0 'UIViewSafeAreaLayoutGuide-top' V:|-(0)-[UILayoutGuide:0x6040001a6c80'UIViewSafeAreaLayoutGuide'] (active, names: '|':DidIWin.FailureDetailCell:0x7f8526047200'failure')>" 

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x60400008d070 '$ballIsSquare$' DidIWin.BallView:0x7f8525a3fec0.height == DidIWin.BallView:0x7f8525a3fec0.width (active)> 

Antwort

-1
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 
{ 
    if(indexPath.section == 0){ 
     return 50 
    }else{ 
     return 120 
    } 
} 

dieses Delegatmethode in Ihrem View-Controller

oder können Sie

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
     return UITableViewAutomaticDimension 
} 

für die automatische Dimension

+0

Nein, das ist nicht das, was ich hinzufügen verwenden. Es ist keine statisch große Zelle. Es ist dynamisch, basierend auf den festgelegten Beschränkungen. – Gargoyle

+0

Überprüfen Sie die bearbeitete Antwort –

+0

Die von Ihnen angezeigte Delegate-Methode ist nicht nützlich. Die height-Methode wird nicht wirklich als Delegat benötigt. Es ist bereits so auf dem Tisch selbst festgelegt. Beachten Sie auch, dass ich gesagt habe, dass ich das bereits im dritten Absatz meiner Frage hatte. Die Frage ist, warum ich die Höhe auf 44 basierend auf den gezeigten Einschränkungen erzwinge. – Gargoyle

Verwandte Themen