iOS - 在何处调整UITableView的大小,以便在自定义视图而不是ViewController中创建内容时适合内



我在处理UITableView时遇到问题。我正在使用谷歌地图iOS SDK,我创建了一个自定义视图以实现我自己的Marker Info Window

所以我在我的UIView中添加了UITableView,但我不知道在哪里调整它的大小以适合它的内容。

我已经设置了我的tableViewHeightConstraint,现在我希望它适合表视图的内容。

像这样的代码:

self.tableViewHeightConstraint = self.tableView.contentSize.height

我不知道在自定义UIView中我可以在哪里做到这一点,我没有viewWillAppearviewDidLoad方法。

如果我在视图的 init 方法中调用它,它可能会被过早调用,而它的内容还没有绘制。

编辑:

像这样的东西?

-(void) layoutSubviews {
    self.heightTableView.constant = self.tableViewRisk.contentSize.height;
}

尝试在视图layoutSubviews()函数中实现代码self.tableViewHeightConstraint = self.tableView.contentSize.height

在表视图的内容大小属性上添加键值观察器

[self.tableViewRisk addObserver:self forKeyPath:@"contentSize" options:nil context:nil];

并添加以下方法

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
if (object == self.tableViewRisk && [keyPath isEqualToString:@"contentSize"]) {
    self.heightTableView.constant = self.tableViewRisk.contentSize.height;
} }

这将确保一旦表视图完成重新加载内容,此代码将更新表视图的高度约束

最新更新