Kqtr
Kqtr

Reputation: 5935

Autolayout is ignored in Custom UITableViewCell

Despite having set constraints to all elements, including the vertical ones needed for the cell to calculate its height, auto-layout seems to be ignored: all cells are squeezed.

Here's a screenshot of the result and of the constraints in the storyboard:

enter image description here

enter image description here

In the VC that holds the tableView, here's the code in viewDidLoad:

tableView.estimatedRowHeight = 120.0
tableView.rowHeight = UITableViewAutomaticDimension

Commenting out the second line gives cells with a height of 120.0 but Autolayout is ignored as well.


Update

To simplify the interface, I've left a single label with, as constraints:

And with this simplified interface, auto-layout is still not taken into account, which hints me that the problem did not come from badly set constraints.

In the Size Inspector, the row height is set on 120 and Custom is checked. The cell has the right custom class, the cell reuse identifier is correct.

Upvotes: 104

Views: 15157

Answers (2)

Kqtr
Kqtr

Reputation: 5935

Auto-layout was ignored because both the prototype cell AND the UIView of the cell had been given the custom cell class in IB.

Setting the UIView back to UIView class solved the problem.

just to be über clear

Upvotes: 281

Jaafar Barek
Jaafar Barek

Reputation: 420

I think the problem is that you are implementing :

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

 return x
}

You need to remove this function inorder for the tableview to calculate its automatic height for cells.

Upvotes: -3

Related Questions