2016-10-07 8 views
1

Я хочу центрировать подклассовое табличное представление (TSNInformationTableView) в своем супервизоре с помощью xib-файла.intrinsicContentSize для UITableView с центром в своем супервизоре

enter image description here

Высота стола устанавливается с помощью пользовательского присущую размер:

enter image description here

Вопрос является таблица может иметь динамический размер/высота, разное количество клеток с различными текст внутри них. Таким образом, в TSNInformationTableView я определил intrinsicContentSize метод:

- (CGSize) intrinsicContentSize { 

     return self.contentSize 
} 

У меня есть проблема с self.contentSize.height он не возвращает правильную высоту стола, но что-то несколько меньше. Вот почему я попытался компенсировать это множителем 1.45. Он не масштабируется должным образом с разными номерами ячеек.

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

enter image description here

Таблица инициализируется со следующим кодом:

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.

+0

Есть ли причина, по которой вы не используете ограничения высоты и ширины для размера TableView? (который вы можете динамически/программно обновлять, подключив их как выходы) – Kymer

+0

Я использовал его. Но я не знаю высоту таблицы до ее создания. Метод intrinsicContent size, который я использовал в представленной реализации, имеет тот же макет. Я мог бы обновить его с любым правильным значением. Очевидно, что tableview.contentSize не является правильным даже после того, как таблица будет окрашена. Я не знаю почему. Я не использую верхние и нижние колонтитулы. –

+0

Какие данные вы показываете в ячейках? У вас есть ячейки с разными (динамическими) высотами? (кстати, каково изображение с 'sdfsdfsf' в вашем посте, которое должно быть?) – Kymer

ответ

0

Мне пришлось добавить - (void) viewDidLayoutSubviews в контроллере, где таблица вложена. См. Редактирование в конце исходного сообщения.

 Смежные вопросы

  • Нет связанных вопросов^_^