我有一个不同行高的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;
}
答案 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单元格。