我在处理UITableView
时遇到问题。我正在使用谷歌地图iOS SDK,我创建了一个自定义视图以实现我自己的Marker Info Window
。
所以我在我的UIView
中添加了UITableView
,但我不知道在哪里调整它的大小以适合它的内容。
我已经设置了我的tableViewHeightConstraint
,现在我希望它适合表视图的内容。
像这样的代码:
self.tableViewHeightConstraint = self.tableView.contentSize.height
我不知道在自定义UIView
中我可以在哪里做到这一点,我没有viewWillAppear
或viewDidLoad
方法。
如果我在视图的 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;
} }
这将确保一旦表视图完成重新加载内容,此代码将更新表视图的高度约束