You are able to use Auto Layout to achieve self-sizing table view cells with dynamic height.
First, allow the table view to use the Auto Layout constraints and the contents of its cells to determine each cell’s height, by setting the following:
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 100 // Something close to your average cell height
Next, go to your storyboard and ensure that scrolling is disabled for your text view. This is an important setting to tell the textview to size itself accordingly based on its contents.
Leave out the height constraint for the textview because you want it to grow dynamically.
Finally, ensure that you have pinned the top of the textview to the bottom of the top label, and the bottom of the textview to the top of the bottom label. These labels should themselves be pinned to the top and bottom of the cell respectively, so that the cell can determine its total height from top to bottom.
You may also likely have to tweak the vertical compression resistance and the vertical hugging priority of the textview, to give Auto Layout a hint as to which view it should prioritise to compress or expand to fill up the cell space (Auto Layout should warn you on this in the storyboard).