Я хочу центрировать подклассовое табличное представление (TSNInformationTableView) в своем супервизоре с помощью xib-файла.intrinsicContentSize для UITableView с центром в своем супервизоре
Высота стола устанавливается с помощью пользовательского присущую размер:
Вопрос является таблица может иметь динамический размер/высота, разное количество клеток с различными текст внутри них. Таким образом, в TSNInformationTableView я определил intrinsicContentSize метод:
- (CGSize) intrinsicContentSize {
return self.contentSize
}
У меня есть проблема с self.contentSize.height он не возвращает правильную высоту стола, но что-то несколько меньше. Вот почему я попытался компенсировать это множителем 1.45. Он не масштабируется должным образом с разными номерами ячеек.
На изображении есть видимый разрез последней ячейки, потому что высота таблицы, определяемая внутренним контуром, неверна.
Таблица инициализируется со следующим кодом:
self.informationTableView.estimatedRowHeight = 80;
self.informationTableView.rowHeight = UITableViewAutomaticDimension;
[self.informationTableView setScrollEnabled:NO];
UPDATE
мне пришлось добавить этот метод в контроллере, где вид таблицы (TSNInformationTableView) вложен :
- (void) viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
if(!self.isInformationTableViewLoaded) {
self.isInformationTableViewLoaded = YES;
[self.InformationTableView invalidateIntrinsicContentSize];
[self.InformationTableView setNeedsLayout];
}
}
isInformationTableViewLoaded - это просто свойство BOOL в контроллере, указывающее, что таблица создана (чтобы мы могли получить правильный размер табличного вида). Теперь он работает без какой-либо анимационной проблемы.
Кроме того, оценочный стол таблицы должен быть установлен, например. 1000.
Есть ли причина, по которой вы не используете ограничения высоты и ширины для размера TableView? (который вы можете динамически/программно обновлять, подключив их как выходы) – Kymer
Я использовал его. Но я не знаю высоту таблицы до ее создания. Метод intrinsicContent size, который я использовал в представленной реализации, имеет тот же макет. Я мог бы обновить его с любым правильным значением. Очевидно, что tableview.contentSize не является правильным даже после того, как таблица будет окрашена. Я не знаю почему. Я не использую верхние и нижние колонтитулы. –
Какие данные вы показываете в ячейках? У вас есть ячейки с разными (динамическими) высотами? (кстати, каково изображение с 'sdfsdfsf' в вашем посте, которое должно быть?) – Kymer