我在Xcode界面构建器中创建了一个自定义TableViewCell,其中UILabel和UITextView是垂直堆叠的,我设置了它们与容器单元视图之间的垂直间距约束。
UITextView可能需要保存大量文本,我不希望出现垂直滚动条,因此我使用[NSString sizeWithFont:constraintTosize:]计算UITextView的高度,并使用此新高度设置其框架。
但它不起作用。
然后我注意到.xib中的自定义单元格具有固定的行高。我想知道这个固定高度和垂直约束是否决定了UITextView的高度,我无法改变它?
如果我想要反过来怎么办:当我设置UITextView的高度时,根据约束计算包含单元格的高度?这可能吗?
答案 0 :(得分:1)
以下代码应该会有所帮助。我能够在名为UILabel
的自定义UITableViewCell
内的CustomCell
上执行您所描述的内容并对可变数量的文本进行说明。 CustomCell
使用样板UITableViewCell
代码而无需修改。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// Configure the cell...
// Using some sample text in here for testing purposes.
NSString *sampleText = @"The UITextView may need to hold a lot of text, I don't want vertical scrollbar to appear. The UITextView may need to hold a lot of text, I don't want vertical scrollbar to appear.";
cell.textLabel.text = sampleText;
[cell.textLabel layoutIfNeeded];
return cell.textLabel.frame.size.height;
}
最后但并非最不重要的是,使用AutoLayout在UILabel
内设置CustomCell
。请点击此链接查看有关如何执行此操作的步骤:https://stackoverflow.com/a/16009707/885189