私は基本的な文字列を持つセルを持つ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
この[link](http://stackoverflow.com/questions/4775107/uitableviewcellstylesubtitle-font-size)は、UIFontが何であるかについての非常に良い推測を示していますが、あなたが確かに知っているように、特に私の表のセルのためのUIFontを設定します。私は、デフォルトのテーブルセルのデフォルトの改行モードがUILineBreakModeTailTruncationであることを確信しています。 –