我试图让我的UITableViewCell.textLabel
属性在纵向和横向上自动调整文本。
现在我的tableView
不可滚动,因此cell
框架不是动态的。我需要textLabel
属性来自动换行并调整为一组#行。将numberOfLines
设置为0并不起作用,因为它已切断,因为我的cell
高度小于textLabel
最终高度。使用numberOfLines
的任意数字会切断文本。
如何调整textLabel
的大小以适应frame
的{{1}}?
以下代码
cell
答案 0 :(得分:1)
编辑:如果单元格是设定的高度,这很简单。您必须在其中设置自定义单元格和textLabel,因为我认为您无法以您需要的方式修改基本或其他预设单元格中的textLabel。只需添加一个文本标签并设置约束,将其链接到四边,最小量(可以为零)。如果有额外的空间,标签会自动垂直居中文本,因此标签太高不应该成为问题。
原始答案:
如果你没有使用tableView自调整单元格,也许是为了支持iOS 7,那么它在单元格中的作用并不重要,因为问题在于tableView行高。如果是单个标签,那么经典的boundingRect方法将起作用。在tableView:heightForRowAtIndexpath:
做
NSString *stringFromDataSource = @"Text For Label";
CGSize potentialSize = CGSizeMake(CGRectGetWidth(self.tableview.frame), CGFLOAT_MAX);
NSStringDrawingOptions optionsForMultiline = NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading;
NSDictionary *attributes = @{
NSFontAttributeName : [UIFont preferredFontForTextStyle:UIFontTextStyleBody]
}; //or whatever
CGRect rectForText = [stringFromDataSource boundingRectWithSize:potentialSize
options:optionsForMultiline
attributes:attributes
context:nil];
return CGRectGetHeight(rectForText);
请注意,在您的问题中,如果textLabel使用autolayout进行扩展,则不会使用用于调整单元格大小的各种选项,除非限制最大大小,此时{{1}等等会开始。