私はUITableViewをUIViewアニメーションブロックを通して幅を増やしています。この呼び出しが完了するとカスタムUITableViewCellの幅は、tableview reloadDataにサイズ変更されました
[UIView animateWithDuration:.5
animations:^{
CGRect frame = myTableView.frame;
frame.size.height += 190;
myTableViewView.frame = frame;
[[myTableViewView visibleCells] makeObjectsPerformSelector:@selector(setNeedsDisplay)];
}
completion:nil];
私のサブクラスUITableViewCellsが再描画され、このデリゲートメソッドが呼び出されます。
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
CGRect frame = cell.frame;
frame.size.width = tableView.frame.size.height;
cell.frame = frame;
}
これがなければ、私のUITableViewCellsはUITableViewの全幅に描画されません。私が抱えている問題は、[tableView reloadData]を呼び出すときです。
が-[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:]
この呼び出しは次のとおりです。別のコールがプライベートのUITableView呼び出しからの私のすべてのセルに呼び出されている:リロードデータは、上記の正しいフレームを設定するために呼び出すwillDisplayCellが、私はのUITableViewCell setFrameのスタックトレースを見たときに起動されますすべての私の目に見えるUITableViewCellsのフレームを元のUITableViewのより小さい幅に設定します。誰もが、どのように私の細胞がテーブルビューの幅を維持するために起こってからこれを保つために任意のアイデアを持っていますか?
こんにちは UIViewアニメーションブロックでは、ここで両方を適用したい場合は、高さを高くしないでください。 –