我希望我的 UITableView
只达到它需要的高度,因为它漂浮在主要 UIViewController
的 view
上方。如果我将高度硬编码为 200,而表格中只有一个单元格,这看起来很傻。
我知道在我的 View Controller 中我可以监视 TableView 并根据它拥有的单元格数量定义它的高度,但高度是 View 的一个属性,对于 MVC 它不会 Controller 主动管理 View 的高度很有意义。
是否可以有一个 UITableView
子类,并让它根据它包含的单元格数量定义一个固有高度?因此,使用自动布局,我可以将子类添加到我的 View 中,指定其宽度,将其垂直居中,并可能定义一个“小于或等于”高度约束,以使其小于 200pts。但是在大多数情况下, View 的固有内容大小是否会自动定义 View 的高度?
这就像一个 UILabel
可以水平和垂直居中,左右有一定距离,并自动垂直增长和收缩。
我可以使用 UITableView
子类来实现吗?
最佳答案
您可以通过让 TableView 使用其 contentSize 属性“知道”它需要多高来轻松地做到这一点。如果您使用估计的行高,此值可能会有些不准确,但它应该足够好。在此示例中,我为 TableView 提供了高度约束(以及宽度和中心 Y),并为其创建了一个 IBOutlet (heightCon)。唯一需要的代码是这个,
@interface RDTableView ()
@property (weak,nonatomic) IBOutlet NSLayoutConstraint *heightCon;
@end
@implementation RDTableView
-(void)reloadData {
[super reloadData];
self.heightCon.constant = MIN(200, self.contentSize.height);
}
您还必须覆盖 reloadRowsAtIndexPaths:withRowAnimation: 和 reloadSections:withRowAnimation: 如果您也使用其中任何一个更新您的表格。
关于ios - 是否可以子类化 UITableView 并使其具有基于单元格数量的固有内容大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27134755/