【问题标题】:find correct text height in for a uitableviewcell在 uitableviewcell 中找到正确的文本高度
【发布时间】:2013-04-07 07:20:12
【问题描述】:

我有一个显示不同文本的表格,因此我需要相应地调整单元格高度。我使用委托方法:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
{
// I ask for my content string and then I want to adjust the cell accordingly:
CGSize maximumSize = CGSizeMake(defaultCell.textLabel.frame.size.width, CGFLOAT_MAX);
GSize neededSize = [contentString sizeWithFont:defaultCell.textLabel.font constrainedToSize:maximumSize lineBreakMode:defaultCell.textLabel.lineBreakMode];
CGFloat cellHeight = neededSize.height +15;
return cellHeight;

默认单元格是我的故事板原型单元格。我在 viewDidAppear 委托方法中对其进行了初始化,这样我就可以轻松访问我的原型 uitableviewcell,这样我只需要更改故事板中的字体之类的东西。

我遇到的问题是函数 sizeWithFont: constrainedToSize: lineBreakMode: 没有给我准确的答案。如果下一行只有几个非常短的单词,则会导致一行太低。

有没有人知道为什么会这样以及如何避免?

【问题讨论】:

    标签: ios uitableview sizewithfont


    【解决方案1】:

    加载视图和渲染视图时,单元格宽度可能会有所不同。我的想法是,您认为正在使用的单元格框架与正在渲染的单元格框架不同。

    【讨论】:

    • 那么有什么更好的方法来处理这个问题?我切换到使用默认单元格,因为当调用单元格高度的委托方法时,其他单元格尚未初始化。
    • 如果覆盖tableView:willDisplayCell:forRowAtIndexPath并打印cell.textLabel的框架,在iPhone屏幕(基本单元格)上,框架是(10 0; 300 44),在iPad屏幕上左右边距保持10每个像素;所以我会对defaultCell.textLabel.frame.size.width 中的-20px 进行硬编码,但留下评论以说明20px 实际代表什么以及它被删除的原因。
    猜你喜欢
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 2015-06-06
    相关资源
    最近更新 更多