私は検索してきましたが、この問題の解決策を見つけることができません。私の現在のコードはReload section without reloading section headerに基づいています。
ユーザーがセルを押したときに、uitableview セルを拡大しようとしています。最初は 2 行のテキストに制限されている UILabel を持つ UITableViewCell サブクラスがあります。ユーザーが UILabel を押すと、UILabel の numberOfLines プロパティを 0 に設定して、必要な数の行に展開します。
これがtableView:didSelectRowAtIndexPathからの私のコードです:
if (((NSNumber *)expandedCells[indexPath.section]).boolValue)
{
labelExpandingCell.cellLabel.numberOfLines = 10;
} else
{
labelExpandingCell.cellLabel.numberOfLines = 3;
}
[UIView setAnimationsEnabled:NO];
[self.tableView beginUpdates];
[self.tableView setNeedsDisplay];
[self.tableView endUpdates];
[UIView setAnimationsEnabled:YES];
通常、UITableView の contentOffset.y == 0 の場合、これは正常に機能することがあります。通常、このコードを実行すると、テーブルビューは後方に 100 ピクセルほどジャンプします。このコードの実行前後のログの例を次に示します。
2016-03-25 14:57:08.549 TableViewTest[485:129926] 更新前のコンテンツ オフセット: 153.500000 2016-03-25 14:57:08.568 TableViewTest[485:129926] 更新後のコンテンツ オフセット: 136.500000
現在表示されているセルを展開すると、自動レイアウトによってテーブルビューが後方にジャンプするのはなぜですか?