1

2つの要素を持つカスタムUITableViewCellがあります。UIViewとUILabel。セルは投票に使用されるので、投票に基づいてUIViewのディメンションを変更できるようにしたいと思います。現在、cellForIndexAtPathメソッドでUIViewのフレームを設定しています。UIViewのフレームは修正されて変更されていますが(NSLogを使用していることを確認するために3つの場所をチェックしているため)、画面に表示された後、セルに反映されていません。UIViewのフレームが変更されたと表示するのに、表示されたときにセルのフレームサイズのままになる理由を誰かが知っていますか?

編集

NSLog(@"before: %@",NSStringFromCGRect(cell.voting_scale.frame));
[cell.voting_scale setFrame:CGRectMake(0.0, 0.0, width, row_dim.height+10.0)];
[cell.voting_scale setBounds:CGRectMake(0.0, 0.0, width, row_dim.height+10.0)];
[cell.voting_scale setClipsToBounds:true];
NSLog(@"after: %@",NSStringFromCGRect(cell.voting_scale.frame));

これがもっと役立つことを願っています

4

1 に答える 1

0

UITableViewの舞台裏のプロセスを完全に理解していませんが、UITableViewCellサブクラスが意図したとおりに機能していないように見える場合、できるだけ多くのコードをlayoutSubviewsに移動することがわかりました。 UITableViewControllerのcellForRowAtIndexPathで呼び出す代わりに、サブクラスのメソッドが役立ちます。

于 2012-09-27T19:13:55.827 に答える