2016-05-05 5 views
3

タップしたときにすべての行でサブリストを表示できるタルブルビューを作成しようとしています。そのために、私は、データモデルを更新し、アニメーションセルフサイズのinsertRowsAtIndexPathsが変更されたUITableViewはcontentOffsetを変更します

[self.tableView insertRowsAtIndexPaths:addedIndexPaths withRowAnimation:(UITableViewRowAnimationTop)]; 

を呼び出す行が表示されている間に行われます。 追加されたセルは、アニメーションの後に正しく表示されますが、テーブルビューのアニメートがスクロールアップすることがあります。これは、特にtableviewの最後のセクションで発生します。また、挿入されたセルの上にあるセルの上端が表示されるまで、tableviewは常にスクロールアップします。

表示可能なアニメーション中にcontentoffsetを修正したいと思います。 コンテキストオフセットをbegin updatesend updatesに設定しようとしましたが、アニメーションがスクロールアップして内容がスクロールして元の位置に戻ってしまうので、これは機能しませんでした。

自動レイアウトを使用してセルのセルフサイジングを行います。

可視セルを挿入する際に、テーブルビューのコンテンツオフセットを一定に保つにはどうすればよいですか?

+0

は自己リサイズただ、これらの行を削除し、使用しないでください。これが起こらないようにするには、新しい行アニメーションを選択する必要があります。おそらく、UITableViewRowAnimationNoneが必要です。すべてのオプションは、https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableView_Class/#//apple_ref/c/tdef/UITableViewRowAnimationに記載されています。 – Dare

+0

私はそれほど確かではありませんが:あなたがautoLayoutを使用しているかもしれないが、各アニメーションの後に自分自身を調整するためにautoLayoutをメッセージしていない可能性があります。それが役に立てば幸い。 https://www.youtube.com/watch?v=N5Ert6LTruY – Honey

+1

@ asma22私はセルのサイズを決めるために自動レイアウトを使用します。私は試して、開始/終了の更新ブロック内のself.tableview layoutIfNeededと呼ばれたが、それは問題を解決しませんでした。自動レイアウトにどのように気づくのですか? – HasenBaumeister

答えて

0

私は問題を把握しました。 自己サイズ変更が根本原因です。あなたはUITableViewRowAnimationTopを指定する際に追加のセルの先頭にスクロールするテーブルビューを求めている

tableView.estimatedRowHeight = 123

- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {

+0

この変更を行った後でもセルは自動サイズ調整されていますか? – Macondo2Seattle

+0

@ Macondo2Seattle: 'systemLayoutSizeFittingSize'でセルの高さを計算しました。 – anhtu

関連する問題