gpt4 book ai didi

ios - 具有动态高度的 UITableViewCell 中的 UILabel

转载 作者:可可西里 更新时间:2023-11-01 03:07:10 25 4
gpt4 key购买 nike

我在 UITableView 中实现动态行高时遇到了一些问题 - 但我遇到问题的不是单元格,而是单元格内部的 UILabel。

单元格只包含一个 UILabel 来显示文本。我的 tableView:heightForRowAtIndexPath: 通过使用 NSString 的 sizeWithFont: 方法计算标签的高度来正确调整每个单元格的大小。

我有一个 UITableViewCell 的子类,它只包含连接到 Storyboard 中的 UILabel 属性。在 Storyboard 中,我将它的行数设置为 0,因此它会根据需要使用尽可能多的行数,并且我将它的 lineBreak 设置为 Word Wrap。

这是我设置单元格的方式:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath  *)indexPath
{
ExpandCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

SomeObject *object = self.tableObjects[index.row];

cell.myLabel.text = [object cellText];

[cell.myLabel sizeToFit];

return cell;
}

当我构建它时,我得到了我的表格 View ,其中单元格的大小都调整到了适合其内容的正确高度,但标签都是一行,刚好从单元格的一侧延伸出来。但是,如果我滚动表格使单元格离开屏幕,然后滚动回到它们,它们的标签将正确调整大小并且单元格将看起来像我最初预期的那样。

我也曾尝试使用与计算行高相同的方法来计算标签框架,但我得到了相同的行为 - 它无法正确绘制,直到它滚出屏幕并再次打开。

我找到了两种解决此问题的方法,但都不是可接受的解决方案。

首先,如果在 viewDidAppear: 我在我的 tableview 上调用 reloadData,单元格和标签会在第一时间正确绘制自己。这对我的情况不起作用,因为我将向该表中添加和删除单元格,并且我不想在每次添加单元格时调用 reloadData。

第二种解决方法对我来说似乎很奇怪 - 如果我将字体设置保留为 UILabel 上的默认系统字体 17,单元格将正确绘制自己。一旦我更改字体大小,它就会恢复到不正确绘制标签的行为,直到它离开屏幕并返回,或者在 tableView 上调用 reloadData。

对于这方面的任何帮助,我将不胜感激。

最佳答案

我最终通过分配/初始化 cellForRowAtIndexPath 中的标签解决了这个问题。我不完全确定为什么这是一个解决方案——但我遇到的问题似乎与 Storyboard如何(或者何时,也许?)在单元格中创建对象有关。如果我在 cellForRowAtIndexPath 的单元格中分配/初始化标签,所有内容都会正确加载和调整大小。

所以...我目前的解决方法是检查单元格中是否有我的自定义标签。如果没有,我分配/初始化标签并将其放入单元格中。如果它确实有一个,比如在它的一个已出队的单元格中,那么我只需在已经存在的标签中设置文本。

不确定它是否是最好的解决方案,但它目前有效。

关于ios - 具有动态高度的 UITableViewCell 中的 UILabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14460093/

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