iOS UITableView动态宽度

iOS UITableView动态宽度,ios,uitableview,resize,Ios,Uitableview,Resize,我有一个UITableView,其中的单元格包含基本字符串。目前,我已将我的桌子框架硬设为400宽。我想知道的是,是否有一种方法可以根据行中最长的单词调整框架。我试图获取我的单元格textLabel值,但它们总是返回null。我曾尝试在网上搜索任何帮助,但我只看到有关更改高度的参考资料 非常感谢您的建议。数据源(通常是UITableViewController)可以用来计算它提供给UITableView的任何字符串的最大宽度。此时,数据源可以修改UITableView的框架,这将激活UITabl

我有一个UITableView,其中的单元格包含基本字符串。目前,我已将我的桌子框架硬设为400宽。我想知道的是,是否有一种方法可以根据行中最长的单词调整框架。我试图获取我的单元格textLabel值,但它们总是返回null。我曾尝试在网上搜索任何帮助,但我只看到有关更改高度的参考资料

非常感谢您的建议。

数据源(通常是UITableViewController)可以用来计算它提供给UITableView的任何字符串的最大宽度。此时,数据源可以修改UITableView的框架,这将激活UITableView的重新加载机制。由于计算字符串的最大宽度很容易。还要注意通过指定最大宽度(您提到的400)来设置表的宽度限制


您还应该考虑在更改宽度后如何定位表视图。由于框架的原点从未被修改过,因此表格视图的左上角将保持不变,但会向右增长。

如何从表格中获取字体和换行符?我之所以问这个问题,是因为我使用UITableViewCellStyleDefaults设置了单元格。这显示了对UIFont是什么的一个很好的猜测,但是如果我是你,我会专门为我的表格单元格设置UIFont,这样你就可以确定了。我确信默认表格单元格的默认换行模式是UILineBreakModeTailTruncation。
    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];