UITableViewCell 自动调整高度不起作用
Posted
技术标签:
【中文标题】UITableViewCell 自动调整高度不起作用【英文标题】:UITableViewCell auto-sizing height not working 【发布时间】:2015-06-01 02:57:19 【问题描述】:我的表格视图中的单元格不会自动调整其高度以包含内容。我正在为单元原型使用“基本”样式。我创建了一个只包含我的视图控制器和故事板的新测试项目,它也有同样的问题。我做错了什么?
RowHeightTestController:
@implementation RowHeightTestController
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
// Return the number of sections.
return 1;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
// Return the number of rows in the section.
return 2;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Test" forIndexPath:indexPath];
// Configure the cell...
cell.textLabel.text = @"Testing";
cell.textLabel.font = [UIFont systemFontOfSize:60 + indexPath.row];
return cell;
@end
故事板:
我所看到的:
【问题讨论】:
【参考方案1】:为 tableView 和 viewDidLoad 创建插座/引用,添加
tableView.estimatedRowHeight = 44.0;
tableView.rowHeight = UITableViewAutomaticDimension;
为此,您必须更新 tableView 的委托中的数据
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
不是willDisplay
或任何其他代表。
您还必须在 storyboard/xib 中正确设置自动布局约束。
对于屏幕截图所示的简单单元格视图, 为 UILabel 设置如下约束:
引导空间到superview。 超级视图的尾随空间 超级视图的顶部空间 超级视图的底部空间【讨论】:
【参考方案2】:尝试设置表格的属性:
tableView.estimatedRowHeight = 44.0;
tableView.rowHeight = UITableViewAutomaticDimension;
如果内容发生变化,则使用通知重新加载表格
- (void)viewDidAppear:(BOOL)animated
[super viewDidAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(contentSizeCategoryChanged:)
name:UIContentSizeCategoryDidChangeNotification
object:nil];
- (void)viewDidDisappear:(BOOL)animated
[super viewDidDisappear:animated];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:UIContentSizeCategoryDidChangeNotification
object:nil];
// This method is called when the Dynamic Type user setting changes (from the system Settings app)
- (void)contentSizeCategoryChanged:(NSNotification *)notification
[self.tableView reloadData];
欲了解更多信息,请观看这个精彩的答案:https://***.com/a/18746930/3202193
【讨论】:
以上是关于UITableViewCell 自动调整高度不起作用的主要内容,如果未能解决你的问题,请参考以下文章
自动调整 UITableViewCell:更改自定义单元格内视图的高度
如何使用自动调整其高度的 SnapKit 以编程方式创建 UITableViewCell?
UITableViewCell 高度自动布局在 iOS 10 上不起作用