Even not writing the tableView.rowHeight = UITableView.automaticDimension and the tableView.estimatedRowHeight = 600 statements in the viewDidLoad(), the self-sizing table view cells still can work correctly. I am not sure the two statements are mandatory requirement?
The default value for both rowHeight and estimatedRowHeight is automaticDimension, so in this case you don’t have to set them.
Setting rowHeight in code will make sure it is set right, even if the storyboard somehow got another value set.
The estimated height is just about improving scroll response by telling it what to expect, but it will still work even if the estimate is not very good.
@kevcol, when you say every subview needs to have a top, bottom, left, and right constraint, does that mean even subviews that are in a stack view in the cell or do I just need to be sure the stack view has top, bottom, left, and right constraints?