До сих пор я просто использовал текстовые ярлыки внутри ячеек, которые должны автоматически настраиваться. Обычно я устанавливаю ограничения для всех ребер (просмотр содержимого или соседей) и добавляю следующие строки к моему viewDidLoad()
:
// 190.0 is the actual height of my custom cell (see next image) in the storyboard containing a label and a randomly sized UIImageView
tableView.estimatedRowHeight = 190.0
tableView.rowHeight = UITableViewAutomaticDimension
Теперь, когда вы пытаетесь включить изображения, я сталкиваюсь с несколькими проблемами. Во время какого-то исследования я нашел несколько подходов, написанных в Objective-C, но в то время как я не уверен, какой из них действительно затрагивал мою центральную проблему, я все еще боюсь сложного кода Objective-C. Итак, чтобы возобновить: моя конечная цель - получить таблицу с правильными размерами (правильными высотами), каждая из которых содержит заголовок и изображение, соответствующее ширине экрана. Эти изображения могут иметь разные пропорции и разные размеры. Чтобы упростить некоторые из проблем, я подготовил новый, более простой проект:
- Во-первых, я создал класс
UITableViewController
иCustomCell
с двумя IBOutletstitle: String
иpostedImage: UIImage
(UIImage случайным образом размером в раскадровку) для настройки ячеек. Я определил ограничения для ребер и друг друга.
- При построении две ячейки получают конфигурацию, содержащую одно и то же изображение, но они извлекаются из двух отдельных файлов разного размера и разрешений (900 x 171 против полутонов размером 450 x 86). Режим просмотра UIImage установлен на "Aspect Fit", но поскольку я не мог заставить его работать так, как я хочу, пока не уверен, что это правильная настройка. В то время как я ожидал, что высота ячейки будет рассчитана на основе масштабированного UIImage, включая ограничения, которые я установил, он, по-видимому, основан на начальной высоте файлов изображений (так 171 и 86). Он фактически не адаптируется к фактической высоте представления UIImage (около 70, я бы догадался).
В несколько более сложном моем проекте я хочу, чтобы разные изображения автоматически соответствовали ширине экрана независимо от того, являются ли они портретными или ландшафтными, а в случае, если их ширина меньше ширины экрана, их следует увеличить. Как и в проекте выше, каждая высота ячейки должна соответствовать его индивидуальному контенту, как определено ограничениями в раскадровке. Во всяком случае, он начинается с проблемы, обсуждавшейся выше: как я могу позволить этим двум ячейкам иметь одинаковые, правильную высоту, обнимать ее содержимое, как это определено в раскадровке?
Спасибо за помощь!