2
我有一个UITableView,其中包含基本字符串的单元格。此刻,我将桌子的框架硬设置为400的宽度。我想知道的是,是否有方法根据行中最长的单词来调整框架。我试图让我的单元格textLabel值,但他们总是返回null。我试图在网上搜索任何帮助,但我只看到了改变身高的参考。iOS UITableView动态宽度
任何意见非常感谢。
我有一个UITableView,其中包含基本字符串的单元格。此刻,我将桌子的框架硬设置为400的宽度。我想知道的是,是否有方法根据行中最长的单词来调整框架。我试图让我的单元格textLabel值,但他们总是返回null。我试图在网上搜索任何帮助,但我只看到了改变身高的参考。iOS UITableView动态宽度
任何意见非常感谢。
数据源(通常是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];
您还应该考虑在更改宽度后如何定位表视图。由于框架的原点从未被修改过,所以表格视图的左上角将保持在相同的位置,但它会向右增长。
如何从表格中获取字体和换行符?我只问,因为我设置单元格使用UITableViewCellStyleDefault – Seb 2012-02-10 00:30:25
这[链接](http://stackoverflow.com/questions/4775107/uitableviewcellstylesubtitle-font-size)显示了一个很好的猜测是什么UIFont是,但如果我是你我将专门为我的表格单元格设置一个UIFont,所以您肯定会知道。我确定默认表格单元格的默认换行符模式是UILineBreakModeTailTruncation。 – 2012-02-10 00:52:17