現在の位置を維持し、変更によって高さの変更をアニメーション化しながら、UITableView 内のすべてのセルを拡大/縮小できるようにしたいと考えています。基本的に、ビュー内の現在のセルが拡大/縮小しているように見え、スクロール位置は同じままです。
高さの異なる2つの状態を持ち、呼び出すことで、セルを拡張/接触させることができます
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationAutomatic];
そして、私は次のようにして同じ立場を維持しようとしました(この計算が100%正しいわけではありません):
//calculate the new position it should scroll to based on new cell height
CGFloat posFromTop = self.tableView.contentOffset.y;
CGFloat newDistance = 0;
if(expandedState)
{
CGFloat cellsFromTop = posFromTop / kExpandedCellHeight;
newDistance = cellsFromTop * kCollapsedCellHeight;
}
else
{
CGFloat cellsFromTop = posFromTop / kMGLCollapsedCellHeight;
newDistance = cellsFromTop * kMGLExpandedCellHeight;
}
}
//reload section
[self.tableView setContentOffset:CGPointMake(0, newDistance) animated:YES];
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationAutomatic];
これは機能しているように見えますが、アニメーションの際に位置が保持されず、白く点滅するため途切れ途切れになり、リロード中に tableView が静止しているようには見えません。
同じ位置を維持しながら、すべてのセルの高さをスムーズにアニメーション化する方法はありますか?