以父视图为中心的 UITableView 的 intrinsicContentSize
intrinsicContentSize for UITableView centered in its superview
我想使用 xib 文件将子类 table 视图 (TSNInformationTableView) 居中。
table 的高度是使用自定义固有尺寸设置的:
问题是 table 可以有一个动态的 size/height,不同数量的单元格,里面有不同的文本。所以在 TSNInformationTableView 中我定义了 intrinsicContentSize 方法:
- (CGSize) intrinsicContentSize {
return self.contentSize
}
我对 self.contentSize.height 的问题是它 return 不是 table 的正确高度,而是稍微小一些。这就是为什么我试图用乘数 1.45 对此进行补偿。它不能正确缩放不同数量的单元格。
由于 intrinsicContentSize 定义的 table 高度不正确,因此图像中最后一个单元格的可见切口。
table 使用以下代码初始化:
self.informationTableView.estimatedRowHeight = 80;
self.informationTableView.rowHeight = UITableViewAutomaticDimension;
[self.informationTableView setScrollEnabled:NO];
更新
我必须在嵌套 table 视图 (TSNInformationTableView) 的控制器中添加此方法:
- (void) viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
if(!self.isInformationTableViewLoaded) {
self.isInformationTableViewLoaded = YES;
[self.InformationTableView invalidateIntrinsicContentSize];
[self.InformationTableView setNeedsLayout];
}
}
isInformationTableViewLoaded 只是控制器中的一个简单的 BOOL 属性,表示 table 已创建(以便我们可以获得适当的 table 视图大小)。它现在可以正常工作,没有任何动画问题。
此外 table 的 estimatedRowHeight 应该设置为例如1000.
我必须在 table 嵌套的控制器中添加 - (void) viewDidLayoutSubviews。见原文末尾的编辑post.
我想使用 xib 文件将子类 table 视图 (TSNInformationTableView) 居中。
table 的高度是使用自定义固有尺寸设置的:
问题是 table 可以有一个动态的 size/height,不同数量的单元格,里面有不同的文本。所以在 TSNInformationTableView 中我定义了 intrinsicContentSize 方法:
- (CGSize) intrinsicContentSize {
return self.contentSize
}
我对 self.contentSize.height 的问题是它 return 不是 table 的正确高度,而是稍微小一些。这就是为什么我试图用乘数 1.45 对此进行补偿。它不能正确缩放不同数量的单元格。
由于 intrinsicContentSize 定义的 table 高度不正确,因此图像中最后一个单元格的可见切口。
table 使用以下代码初始化:
self.informationTableView.estimatedRowHeight = 80;
self.informationTableView.rowHeight = UITableViewAutomaticDimension;
[self.informationTableView setScrollEnabled:NO];
更新
我必须在嵌套 table 视图 (TSNInformationTableView) 的控制器中添加此方法:
- (void) viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
if(!self.isInformationTableViewLoaded) {
self.isInformationTableViewLoaded = YES;
[self.InformationTableView invalidateIntrinsicContentSize];
[self.InformationTableView setNeedsLayout];
}
}
isInformationTableViewLoaded 只是控制器中的一个简单的 BOOL 属性,表示 table 已创建(以便我们可以获得适当的 table 视图大小)。它现在可以正常工作,没有任何动画问题。
此外 table 的 estimatedRowHeight 应该设置为例如1000.
我必须在 table 嵌套的控制器中添加 - (void) viewDidLayoutSubviews。见原文末尾的编辑post.