UITableView с динамической высотой как для таблицы, так и для ее ячеек - PullRequest
0 голосов
/ 06 сентября 2018

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

Однако я могу сделать одну из двух вещей. Или:

  1. Я определяю заданную высоту для ячеек и вычисляю общую высоту - tableViewHeightConstraint.constant = CGFloat (tasks.count * 120)
  2. Я рассчитываю высоту каждой ячейки индивидуально на основе ее содержимого, но я не могу добавить их все, поскольку не все ячейки созданы и готовы для меня, чтобы добавить их высоту.

Есть идеи, как мне это сделать?

1 Ответ

0 голосов
/ 06 сентября 2018

Вы можете наблюдать изменения в содержании как это.

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.tableView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];
}

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context
{
    if ([keyPath isEqualToString:@"contentSize"]) {

        CGSize newSize = [[change objectForKey:NSKeyValueChangeNewKey] CGSizeValue];
        CGSize oldSize = [[change objectForKey:NSKeyValueChangeOldKey] CGSizeValue];

        if (newSize.height != oldSize.height) {

            // use newSize.height for your process
        }
    }
}

убедитесь, что наблюдатель удален

- (void)dealloc {
    if(self.isViewLoaded) {
        [self.tableView removeObserver:self forKeyPath:@"contentSize"];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...