Как сделать UITableView подходящим для размера контента

У меня есть UITableView (назовем его tbl_A) внутри ячейки представления таблицы, высота которой динамическая и установлена UITableViewAutomaticDimension . Высота ячейки tbl_A также динамична, и я знаю, что данные tbl_A не будут слишком большими. Поэтому я хочу, чтобы tbl_A был отключен прокруткой, а его frame.size равен его размеру содержимого . Я попытался установить tbl_A в frame.size.height = tbl_A.contentSize.height, к сожалению, высота неправильная.

Кстати, мне не нужно использовать UITableView для выполнения этой задачи. Я просто хочу показать все данные. Какие-либо предложения?

Это тот эффект, который я хочу достичь: введите описание изображения здесь

Просто 😉

 override var intrinsicContentSize: CGSize { return contentSize } 

Пока прокрутка заблокирована, вы можете использовать следующее, чтобы динамически сопоставлять макет tableView:

  let size = actionsViewController.view.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize) actionsViewController.view.frame.size = size actionsViewController.preferredContentSize = size 

Ниже приведен способ автоматического расчета высоты макета для вас и предоставления вам размера, основанного на ограничениях, которые вы передаете. Другим способом может быть следующее:

  CGFloat leftViewHeight = 0; if (self.isExpanded) { [self.lineItemLineNumberListTableViewController.tableView layoutIfNeeded]; UITableView *tableView = self.lineItemLineNumberListTableViewController.tableView; CGSize tableViewContentSize = tableView.contentSize; leftViewHeight = tableViewContentSize.height; } self.leftViewHeightConstraint.constant = leftViewHeight; 

Ранее я использовал вышеупомянутое, чтобы расширить динамически изменяющиеся размеры ячеек с динамическими подзонами внутри них. Это настраивает ограничение по высоте, основанное на размере содержимого ПОСЛЕ перезагрузки содержимого tableView, чтобы обеспечить загрузку содержимого до корректировки размера.

  1. Для вашего случая вы также можете использовать scrollView.
  2. В этом scrollView, добавляя каждую подсечку, отслеживайте каждую подгруппу, добавляя каждую высоту каждой подэлемента (принимайте переменную как referenceHeight)
  3. наконец, установите высоту прокрутки по расчетной высоте (referenceHeight)

Ниже приведен метод определения размера содержимого tableView.

 - (CGFloat)tableViewHeightOfTable:(UITableView *)table { [table layoutIfNeeded]; return [table contentSize].height; } 

Убедитесь, что вы вызываете этот метод после перезагрузки таблицы, как показано ниже.

 [YourTable reloadData]; YourTable.frame.size.height = [self tableViewHeightOfTable:YourTable]; 

1) Добавьте к своему классу ссылку на ограничение:

 var heightC: NSLayoutConstraint! 

2) Отключить прокрутку и добавить ограничение высоты:

 tableView.scrollEnabled = false heightC = tableView.autoSetDimension(.Height, toSize: 20) // using PureLayout library 

3) переопределить viewDidLayoutSubviews вашего контроллера:

 override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() heightC.constant = tableView.contentSize.height } 

и установить атрибут «постоянный» ограничения высоты для высоты содержимого таблицы.

4) при обновлении данных (например, когда количество элементов изменяется от 0 до больше) просто принудительно отображает представление основного контроллера в макет:

 view.setNeedsLayout() 

В вашем случае tableview является лучшим решением, вы можете использовать различные uitableviewcells и разделы и можете загрузить его в cellForRowAtIndexPath.

  • Пользовательские UITableViewCells не используются повторно в UITableView
  • Настройка нескольких разделов в UITableView
  • автоматическая настройка пользовательского UITableViewCell и метки в нем для текста
  • Создайте заголовок раздела UITableView в интерфейсе Builder
  • Добавление UIViewcontrollers в UIScrollview
  • Как прокрутить контроллер View поверх другого контроллера?
  • Заголовок в раскадровке для UITableViewController не "прилипает"
  • Автоматизация IOS UITableview с помощью appium
  • Swift - выбранный цвет фона UITableViewCell на нескольких выделениях
  • Подкласс UITableViewCell
  • Динамическая высота для статических ячеек таблицы с оберткой?
  • Interesting Posts

    CoreAnimation с UIImage

    Как предоставить Placeholder для TextField настроек Bundle (Root.plist)

    Как установить фоновое изображение для SKScene?

    Хранение даты в основных данных

    Доступ к датчику окружающего света в iOS

    iOS 9.0.2 – Не удается установить приложение Enterprise App -Unable для загрузки приложения (имя приложения) не удалось загрузить в это время

    iOS: воспроизведение htaccess защищенного видео mp4 прямо в браузере

    Подставка устанавливается на «Настройка CocoaPods Master repo»

    Разрешить UILabel обрезать текст, но на границе слова

    Несовместимое целое число с преобразованием указателя, присвоенное 'CGFloat *' (aka 'float *') из 'int'

    NSPredicate для нескольких объектов и свойств

    Используя код C ++ в iOS, создайте статическую библиотеку или смешайте с Objective C?

    Как создать автообновляющуюся анимацию, которая навсегда зацикливается в Sprite Kit?

    изменение свойства contentGravity в слое только для преобразования, не будет иметь эффекта

    UITableView внутри UITableView?

    Давайте будем гением компьютера.