Существует множество потоков правильной калибровки tableHeaderView с автоматическим компоновкой (один такой поток), но они имеют тенденцию к предварительной версии iOS 8.
У меня есть ситуация с многочисленными табличными представлениями, все с заголовками, этот размер правильно под iOS 7, но неправильно под iOS 8, используя код, который больше всего назван выше. В контроллерах для таблиц у меня есть следующий метод:
- (void)rejiggerTableHeaderView
{
self.tableView.tableHeaderView = nil;
UIView *header = self.headerView;
[header setNeedsLayout];
[header layoutIfNeeded];
CGFloat height = [header systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
CGRect headerFrame = header.frame;
headerFrame.size.height = height;
header.frame = headerFrame;
self.tableView.tableHeaderView = header;
}
С многострочной меткой в iOS 7 это правильно упорядочивает заголовок таблицы так:
Но тот же код, выполняемый под iOS 8, производит следующее:
Какой трюк для получения -systemLayoutSizeFittingSize: вернуть правильный размер в iOS 8? Вот пример проекта, который демонстрирует проблему.