Использование autolayout в tableHeaderView
у меня естьUIView
подкласс, который содержит многострочныйUILabel
, Это представление использует autolayout.
Я хотел бы установить эту точку зрения какtableHeaderView
изUITableView
(не заголовок раздела). Высота этого заголовка будет зависеть от текста метки, который, в свою очередь, зависит от ширины устройства. Разновидность сценария autolayout должна быть хороша в.
Я нашел и попыталсямного много решения чтобы заставить это работать, но безрезультатно. Некоторые из вещей, которые я пробовал:
установкаpreferredMaxLayoutWidth
на каждом ярлыке во времяlayoutSubviews
определяяintrinsicContentSize
пытаясь выяснить необходимый размер для представления и установкиtableHeaderView
кадр вручную.добавление ограничения ширины к представлению, когда установлен заголовоккуча других вещейНекоторые из различных сбоев, с которыми я столкнулся:
метка выходит за пределы ширины вида, не переноситсявысота кадра равна 0приложение падает с исключениемAuto Layout still required after executing -layoutSubviews
Решение (или решения, если необходимо) должно работать как для iOS 7, так и для iOS 8. Обратите внимание, что все это делается программно. Я создалнебольшой пример проекта в случае, если вы хотите взломать его, чтобы увидеть проблему. Я сбросил свои усилия до следующей начальной точки:
SCAMessageView *header = [[SCAMessageView alloc] init];
header.titleLabel.text = @"Warning";
header.subtitleLabel.text = @"This is a message with enough text to span multiple lines. This text is set at runtime and might be short or long.";
self.tableView.tableHeaderView = header;
Что мне не хватает?