gpt4 book ai didi

ios - 混合 xib 的 UITableViewCell 和以编程方式生成的 UITableViewCells

转载 作者:行者123 更新时间:2023-11-29 01:04:05 31 4
gpt4 key购买 nike

我必须集成从代码中以编程方式生成的 UITableViewCell,如下所示:

UITableViewCell *newCell = [[UITableViewCell alloc] initWithFrame: CGRectMake(0,0, screenWidth, 150];

但是,此 TableView 中的其余单元格是使用依赖自动布局的 xib 生成的,因此原始程序员仅使用 estimatedHeightForRow 方法,而不是 heightForRow

除非我实现 heightForRow,否则我以编程方式生成的 TableView 单元格都被搞砸了(默认估计高度为 64,而不是框架的高度 150),而现有单元格一旦实现就会被搞砸除了 estimatedHeightForRow 之外,还实现 heightForRow。有办法解决这个难题吗?

感谢您的建议。

最佳答案

首先,您应该使用 UITableViewCell 的指定初始化器 - initWithStyle:reuseIdentifier: 而不是 UIView 的 initWithFrame:。但是,我不认为这是问题的原因,因为我已经测试了 initWithFrame: 并且它似乎默认为默认样式并且没有重用标识符。

您还没有说明实例化单元后要对它做什么。您使用默认布局还是添加您自己的自定义 View ?默认布局(仅包含一行文本)在我的测试中似乎可以正常工作,单元格的大小根据 textLabel 中的文本量进行调整。

如果您要添加自定义 View ,您需要确保 contentView 具有完全定义其高度的垂直约束。例如,如果您有两个垂直对齐的 UILabel,那么您将需要垂直约束,例如 @"V:|-10-[label1][label2]-10-|"。如果约束未完全定义,则 contentView 将折叠为零,并且您的 View 将与下一个单元格重叠。

为了提供更多细节,当使用自动调整单元格大小时,UITableView 不会查看返回单元格的框架,而是调用单元格的 systemLayoutSizeFittingSize:withHorizo​​ntalFittingPriority:verticalFittingPriority:。这导致自动布局引擎分析单元格的约束以计算适当的布局尺寸。然后,UITableView 根据该大小及其在表格中的位置设置单元格的框架。

关于ios - 混合 xib 的 UITableViewCell 和以编程方式生成的 UITableViewCells,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36633283/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com