表格及其单元格具有动态高度的UITableView

时间:2018-09-06 09:21:11

标签: ios swift uitableview

我正在尝试创建一个不可滚动的表格视图,该表格视图会根据其内容来调整其大小。

但是,我能够执行以下两项操作之一。要么:

  1. 我定义了单元格的设置高度并计算总高度-tableViewHeightConstraint.constant = CGFloat(tasks.count * 120)
  2. 我会根据每个单元格的内容分别计算其高度,但是由于并非所有单元格都已实例化并且可以添加高度,因此我无法将它们全部相加。

关于如何实现这一目标的任何想法吗?

1 个答案:

答案 0 :(得分:0)

您可以这样观察contentsize的变化。

- (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"];
    }
}