0

我只需要使用该方法制作一个具有自动高度计算的 UITableViewCell systemLayoutSizeFittingSize:UILayoutFittingCompressedSize。在我的视图有 UILabels 和 UIImageViews 之前,一切都很好。当我需要用 UIButton 替换其中一个标签时,该方法没有正确计算大小。

除了 UILabel 之外,我们是否需要向 UIElements 提供一些额外的信息才能正常工作?

最后,我不得不将 TapGestures 添加到 UILabels 以使其工作。

这是单元格视图:

在此处输入图像描述

时间“09:00 AM”和位置是这里的标签,如果方法正确给出结果,这些可能是按钮。

这个想法很简单,创建一个屏幕尺寸尽可能小的单元 xib(iPhone 3.5 英寸)。在您的类中单独创建一个 xib 实例,为该实例提供信息(时间、位置等)并运行 systemLayoutSizeFittingSize:UILayoutFittingCompressedSize 方法来计算大小。

_scheduleCell = [[[UINib nibWithNibName:@"HomeScheduleViewCell" bundle:nil] instantiateWithOwner:nil options:nil] objectAtIndex:0];

 CGSize fullSize = [_scheduleCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
4

1 回答 1

1

如果您使用的是自动布局,那么您应该使用UITableViewAutomaticDimension. 它会根据内容自动计算行的高度,但它必须需要 autolayoot 并正确设置约束。

正如Apple 文档所述,

要定义单元格的高度,您需要一个完整的约束链和视图(具有定义的高度)来填充内容视图的顶部边缘和底部边缘之间的区域。如果您的视图具有内在的内容高度,系统将使用这些值。如果没有,您必须将适当的高度约束添加到视图或内容视图本身。

你可以像这样使用它,

tableView.estimatedRowHeight = 85.0
tableView.rowHeight = UITableViewAutomaticDimension

通过这个,您可以使用按钮而不是标签或任何对象。

主要是管理自动布局。它应该是完整的约束链,这意味着第一个对象必须具有顶部约束,而最后一个对象必须在单元格的内容视图中具有底部约束。

希望这会有所帮助:)

于 2016-05-30T07:43:59.950 回答