繁体   English   中英

在iOS4和iOS3中调整UITableViewCells的大小

[英]Resizing UITableViewCells in iOS4 versus iOS3

我正在使用以下代码来调整UITableViewCellStyleSubtitle单元格的大小,以适合可以运行多行的文本:

- (CGFloat)tableView:(UITableView *)tableView
heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    CGRect frame = [UIScreen mainScreen].bounds;
    CGFloat width = frame.size.width;

    int section = indexPath.section;
    int row = indexPath.row;

    NSString *title_string = [[my_array_ objectAtIndex:row]
                            valueForKey:@"keyOne"];
    NSString *detail_string = [[my_array_ objectAtIndex:row]
                             valueForKey:@"keyTwo"];

    CGSize title_size = {0, 0};
    CGSize detail_size = {0, 0};

    if (title_string && ![title_string isEqualToString:@""]) {
        title_size = [title_string sizeWithFont:
                  [UIFont systemFontOfSize:TITLE_FONT_SIZE]
                          constrainedToSize:CGSizeMake(width, 4000)
                              lineBreakMode:UILineBreakModeWordWrap];
    }

    if (detail_string && ![detail_string isEqualToString:@""]) {
        detail_size = [detail_string sizeWithFont:
                   [UIFont systemFontOfSize:DETAIL_FONT_SIZE]
                            constrainedToSize:CGSizeMake(width, 4000)
                                lineBreakMode:UILineBreakModeWordWrap];
    }

    CGFloat title_height = title_size.height;
    CGFloat detail_height = detail_size.height;
    CGFloat content_size = title_height + detail_height;

    CGFloat height;

    switch (section) {
        case 0:
            height = content_size; //+ offset;
            break;
        default:
            height = 44.0;
            break;
    }
    return height;
}

这在iOS4。*中运行良好,并提供了容纳文本的单元格。 (如果有的话它们太大了,但是没关系。)

但是,当我在iOS3。*中尝试此操作时,该单元格被弄乱了:textLabel出现在单元格中的低处,然后detailLabel文本通常溢出到下一个单元格中或被截断为“ ...”。 textLabel似乎出现在单元格的中间,而不是顶部。

iOS3和iOS4之间可能有什么不同? 我该怎么解决? 或者,是否有可以很好地替代上述(例如)在两个iOS上都可以使用的方法。

预先感谢您。

在这段代码中,如果您只是在计算正确的行高并将其提供给表格。 所以我想在两种情况下(iOS 4和iOS 3)单元格高度都是正确的。 发生的事情是您没有做任何调整单元格contentView中的两个标签的操作,因此iOS 4单元格可能正在自动调整,而iOS 3则没有。 现在,您可以尝试研究iOS 3字幕单元的层次结构并应用正确的更改,或者可以制作自己的自定义标签并将其添加到contentView层次结构:当然,这些自定义标签将具有其框架,行数,字体,。 ..以与在行高代码中使用的方式相同的方式进行计算(因此,应通过以通用方法导出行高计算来开始重构代码)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM