UITableView有些单元格重叠

时间:2014-12-20 04:12:23

标签: ios objective-c uitableview

我有一个不同行高的tableview。单元格的高度基于每个单元格中的文本量。标签在IB中创建,具有尾随,前导和顶部约束,以便它可以向下扩展。当我测试我的应用程序时,第一个单元格是好的,但是一旦我向下滚动,一切都开始搞砸了。细胞高度关闭,看起来细胞重叠。

-(TableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

postCell = [TableView dequeueReusableCellWithIdentifier:@"Cell"];

if (postCell == nil) {

    postCell = [[TableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];

 }


postCell.label.text = [array objectAtIndex:indexPath.row];

return postCell;


}

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {


NSString *textString = [array objectAtIndex:indexPath.row];
CGRect frame = [textString boundingRectWithSize:CGSizeMake([UIScreen mainScreen].bounds.size.width - 69, 1000.0f) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0]} context:nil];
return ceil(frame.size.height) + 80;



}

1 个答案:

答案 0 :(得分:4)

我认为您必须使用以下方法来计算单元格高度:

-(CGFloat)heightForText:(NSString *)text
{

    UITextView * textView = [[UITextView alloc] initWithFrame: CGRectMake(x, y, width, height)];
    textView.text = text;
    textView.font = [UIFont fontWithName:@"Helvetica" size:15];
    [textView sizeToFit];

    return textView.frame.size.height;
}

使用此方法计算单元格的高度后:

- (float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
          CGFloat ht=[self heightForText:your text];
}

希望你能正确地将高度设置为tableview单元格。