我有UITableViewCell
根据其中的内容动态调整大小。我在heightForRowAtIndexPath
中执行此操作,如下所示:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 1 && indexPath.row == 1) {
NSDictionary *fields = self.messageDetailsDictionary[@"fields"];
NSString *cellText = fields[@"message_detail"];
UIFont *cellFont = [UIFont systemFontOfSize:14.0];
CGSize constraintSize = CGSizeMake(self.tableView.frame.size.width - 50.0f, MAXFLOAT);
CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];
return labelSize.height + 20.0f;
} else {
return tableView.rowHeight;
}
}
在cellForRowAtIndexPath
中,我按如下方式自定义单元格:
case 1:{
UITableViewCell *cell = [[UITableViewCell new] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"DetailCell"];
if (cell == nil) {
cell = [[UITableViewCell new] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"DetailCell"];
}
NSDictionary *fields = self.messageDetailsDictionary[@"fields"];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping;
cell.textLabel.font = [UIFont systemFontOfSize:14.0];
cell.textLabel.numberOfLines = 0; // This means multiline
cell.textLabel.text = fields[@"message_detail"];
return cell;
}
这一切都运行正常,但我希望单元格的内容能够检测到电话号码,日期/时间等。所以我想我需要将UITextView
内容放在UITableViewCell
内使这成为可能。
如何动态调整UITextView
的大小,并通过修改上面的代码将其添加到包含内容的单元格?示例代码请提供答案,因为我已经尝试将UITextView添加为单元格contentView的子视图,但它不能像我期望的那样工作。
答案 0 :(得分:0)
您可以使用sizeToFit
或sizeThatFits:
方法调整UITextView
对象的大小
答案 1 :(得分:0)
创建单元格时,需要将textView添加为其子视图,而无需单独设置textView大小。您只需要在
中返回行的高度时添加边距值- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath