NSString在3.0中的UITableViewCell中过早被切断,但在3.1中看起来很好

时间:2009-08-21 13:26:07

标签: iphone uitableview

我正在使用UITableViewCellStyleValue2UITableViewStyleGrouped

让我们从一些代码开始(它不是100%完成,但我试图包含所需的代码,希望能够破译我正在做的事情,也许还有错误):

#define CELL_FONTSIZE 15.0f
CGSize textSizeValue2 = {207.0f, 9999.0f};

if ([value isEqual: CELL_4]) {
     CGSize   size = [cell4String sizeWithFont:[UIFont boldSystemFontOfSize:CELL_FONTSIZE] constrainedToSize:textSizeValue2 lineBreakMode:UILineBreakModeWordWrap];
     size.height += CELL_HEIGHT;          // top and bottom margin
     result = MAX(size.height, 44.0f);  // at least one row

对于这个特定的单元格,高度的结果在3.0和3.1

时都达到214

以下是单元格的代码:

static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier] autorelease];
    }
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    cell.detailTextLabel.lineBreakMode = UILineBreakModeWordWrap;
    cell.textLabel.numberOfLines = 0;
    cell.detailTextLabel.numberOfLines = 0;
    cell.clearsContextBeforeDrawing;

if ([value isEqual: CELL_4]) {
        cell.textLabel.text = @"About";
        cell.detailTextLabel.text = cell4String;

所以基本上,对于3.0和3.1,完全相同的事情正在发生,但是当在3.0模拟器中运行应用程序时,如果cell.detailTextLabel.numberOfLines有超过三行文本,则最后一行似乎被切断。奇怪的是,文本被切断了,但是单元格在3.0中的正确高度绘制,单元格下方只有一个大的空白空间。

任何人都知道为什么3.0和3.1之间存在差异?我知道我正在使用Xcode的测试版,但它很奇怪它在测试版中工作而不是在3.0中,因为据我所知,我并没有做任何太疯狂的事情,而是基本的事情。

由于

3 个答案:

答案 0 :(得分:1)

好吧,我没有答案或解决方案。但我只想指出我面临同样的问题。我想我会告诉你,你不是唯一一个,这可能是值得的。

我正在使用安装了3.0 iPhone SDK的Xcode 3.1.3(不是测试版)。 “空白区域”出现在模拟器和设备上,两者都运行固件3.0。我没有尝试过更新的版本。

答案 1 :(得分:1)

您需要确定使用其中的文本呈现的文本区域的大小。为此,请使用类似于下面的函数,然后将其设置为所讨论的tableviewcell的行高。相应地调整字体大小。我添加了一个20的垫子给它一些呼吸空间

        UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:14.0];
    CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
    CGSize labelSize = [[detailValues objectAtIndex:indexPath.section] sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

    labelHeight = labelSize.height + 20;

答案 2 :(得分:0)

当我在iOS5上遇到类似的问题时,我发现了这个帖子,所以我会留下几行来解决我如何解决我的问题,以防其他人被卡住。在我的单元格上,我已经提高了文本的字体大小,然后切断了文本,尽管还有足够的空间让它适合。我有

adjustsFontSizeToFitWidth:NO

所以用文章截断文本......

我修复它的方式只是使单元框架的整体宽度和高度变大,这就成了诀窍。

 CGRect frame = CGRectMake(0, 0, SCREEN_WIDTH, height);
 UIView *view = [[UIView alloc] initWithFrame:frame];
 cell.frame = frame;

希望将来可以帮助某人

祝你好运