In my app, I have a table view with an image, label and text view in each cell. I would like to be able to auto-resize the cells depending on the amount of content in the text view. (The text view is the lower most text.)
So far, I have added the correct constraints; leading, trailing, top and bottom to the text view and have disabled scrolling and editing.
In my tableViewController.swift file, I have written this code:
override func viewWillAppear(_ animated: Bool) {
tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension
}
However, this is not working as when I add more text to the text view, it just cuts off.
Maybe this has something to do with the card like look, I have got a UIView in each cell acting as a card.
I honestly don't know what I am doing wrong
A picture is below of what my app looks like and if anyone could help that would be greatly appreciated
Update for swift 4.2
Use:
Instead of:
Make sure that the content mode is set to
Scale To Fill
of yourUITextView
Make sure that there are no height constraints for theUITextView
and the cardUIView
Try to add the estimated height into
viewDidLoad
:Maybe the AutoHeight is not working because of the
UIView
above theUITextView
. Try to call thesizeToFit
andlayoutIfNeeded
methods for theUIView
in thecellForRowAt
:You can also try the
sizeToFit
andlayoutIfNeeded
as well for theUITextView
.Hope this works..
Set bottom of your textView with bottom of that white UIView and make sure that white UIView has left,right,top and bottom constraints :)
Same type of example is explained here programmatically....
Check if your constraints are like this(based on your image) :
imageView : set to Top and Leading of your container, with fix height and width values.
label : you can set it to top and horizontal space of your image, with fix height and width as well.
textView : leading to image, top space to label, trailing and bottom to container.
And keep using
in your viewWillAppear()