Существует ли какой-либо современный способ вычисления высоты пользовательского представления?

#ios #objective-c #autolayout #tableview

#iOS #objective-c #автоматическое описание #tableview

Вопрос:

Я использую пользовательское представление в качестве TableView в tableHeaderView . Он содержит некоторый StackView и некоторые многострочные метки

введите описание изображения здесь

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

введите описание изображения здесь

Как указано в приведенном выше коде, я должен вручную рассчитать высоту метки, используя sizeThatFit и так далее.

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

Итак, я думаю, может быть, есть какой-нибудь более современный способ получить высоту пользовательского представления, чтобы избежать стольких утомительных работ.

Ответ №1:

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

Просто добавьте это в viewDidLoad:

 self.tableView.sectionHeaderHeight = UITableViewAutomaticDimension;
self.tableView.estimatedSectionHeaderHeight = XX; // estimated height
  

Нет необходимости внедрять heightForHeaderInSection

Комментарии:

1. Я думаю, что UITableViewAutomaticDimension будет работать только с UITableViewCells? будет ли это также работать с tableHeaderView?

2. Да, это возможно.

3. спасибо, но в моей ситуации пользовательское представление используется как tableHeaderView, а не как заголовок раздела, в моем предыдущем тесте UITableViewAutomaticDimension не работает с tableHeaderView

4. Я думаю, вам может потребоваться пересмотреть ограничения в вашем customview, если вышеупомянутое решение не работает.

5. что означает «пересмотреть»? перестроить?