我有一个UITableView,其单元格中包含基本字符串。目前我将表格的框架设置为宽度为400.我想知道的是,是否有一种方法可以根据行中最长的单词调整框架。我试图获取我的单元格textLabel值,但它们总是返回null。我试图在网上搜索任何帮助,但我只看到有关改变高度的参考文献。
非常感谢任何建议。
答案 0 :(得分:1)
数据源(通常是UITableViewController)可以是计算它提供给UITableView的任何字符串的最大宽度的数据源。此时数据源可以修改UITableView的框架,这应该激活UITableView的重载机制。感谢NSString UIKit Additions计算字符串的最大宽度很容易。还要注意通过指定最大宽度(您提到的400)来设置表格宽度的限制。
CGFloat maxWidth = 0.0;
CGSize maxSize = CGSizeMake(400,99999);
CGFloat cellIndent = 0; //Use this to account for any cell indenting
for(NSString * text in datasource.array){
CGSize textSize = [text sizeWithFont:yourFont
constrainedToSize:maxSize
lineBreakMode:UILineBreakModeWordWrap];
maxWidth = MAX(maxWidth,textSize.width + 2.0*cellIndent);
}
//Now change the tableView's frame
CGRect newFrame = tableView.frame;
newFrame.size.width = maxWidth;
tableView.frame = newFrame;
//I don't believe a table reload is necessary let me know
[tableView reloadData];
您还应该考虑在更改宽度后如何定位表视图。由于框架的原点从未被修改过,因此桌面视图的左上角将保持在相同的位置,但它将向右增长。