ali*_*ton 8 uitableview uilabel ios
我在UITableView中实现了动态行高的一些问题 - 但它不是我遇到问题的单元格,它是单元格内部的UILabel.
单元格只包含一个UILabel来显示文本.我的tableView:heightForRowAtIndexPath:通过使用NSString的sizeWithFont:方法计算将在其中的标签的高度来正确调整每个单元格的大小.
我有一个UITableViewCell的子类,它只保存连接在storyboard中的UILabel属性.在故事板中,我将其行设置为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;
}
Run Code Online (Sandbox Code Playgroud)
当我构建这个时,我得到了我的表格视图,其中单元格的大小均为其内容的正确高度,但标签都是1行,只是在单元格的一侧运行.但是,如果我滚动表格让单元格离开屏幕,然后滚动回到它们,它们的标签将正确调整大小,单元格将看起来我最初的预期.
我也尝试用我正在计算行高的相同方法计算标签框架,并且我得到相同的行为 - 它不会正确绘制,直到它滚出屏幕再重新开启.
我找到了两种方法来解决这个问题,这两种解决方案都不是可接受的.
首先,如果在viewDidAppear中:我在tableview上调用reloadData,单元格和标签第一次正确绘制.这对我的情况不起作用,因为我将添加和删除此表中的单元格,并且我不希望每次添加单元格时都调用reloadData.
第二种解决方法对我来说似乎很奇怪 - 如果我将字体设置保留在UILabel上的默认系统字体17中,则单元格会正确绘制.一旦我改变了字体大小,它就会恢复到它没有正确绘制标签的行为,直到它离开屏幕并返回,或者在tableView上调用reloadData.
我很感激任何帮助.
我最终通过在cellForRowAtIndexPath中分配/初始化标签来解决这个问题.我不完全确定为什么这是一个解决方案 - 但是我遇到的问题似乎与故事板(或者何时?)在单元格中创建对象有关.如果我在cellForRowAtIndexPath中的单元格中分配/初始化标签,则所有内容都会正确加载和调整大小.
所以...我当前的解决方法是检查单元格中是否有自定义标签.如果没有,我分配/初始化标签并将其放入单元格中.如果它确实有一个,就像它已经出列的单元格一样,那么我只需在已存在的标签中设置文本.
不确定它是否是最好的解决方案,但它现在仍在使用.
| 归档时间: |
|
| 查看次数: |
5099 次 |
| 最近记录: |