私は特別な読み込みをしているテーブルがあります。ユーザーは下にスクロールし始めます。ユーザーが上部近くをスクロールすると、スクロールビューのデリゲートメソッドによってこれが検出され、いくつかの追加コンテンツがすぐに読み込まれ、リストの上部の多くが読み込まれます。私はこれをシームレスに見せたい、「無限のスクロール」のように。これを行うには、コンテンツのオフセットを設定する必要があります。そのため、ユーザーはテーブルを「上に」ジャンプさせることはありません。ゆっくりとスクロールすると、これは完全に機能します。私がすばやくスクロールすると、テーブルが減速するので、私が設定したコンテンツオフセットは無視されます。私は減速している間、私は250ピクセル、たとえば、新しいテーブルの高さを取得し、より多くのデータをロードし、高いテーブル100pxにして素早くスクロールアップとトップを打つのであれば減速しているときに設定したコンテンツオフセットをUITableで上書きしないようにするにはどうすればよいですか?
CGFloat oldHeight = self.tableView.contentSize.height;
CGFloat oldOffset = self.tableView.contentOffset.y;
self.tableContentsArray = newTableContentsArray;
[self.tableView reloadData];
CGFloat newHeight = self.tableView.contentSize.height;
CGFloat newOffset = oldOffset + (newHeight - oldHeight);
self.tableView.contentOffset = CGPointMake(0, newOffset);
:ここで私が使用しているコードです。しかし、それはまだ減速しているので、アップルのコードはオフセットを0.1秒間150に設定した後、次に計算された減速オフセットに移動し、オフセットを0に設定します150pxのコンテンツをスキップしたように見えて、リストの新しいトップにいます。
今、私はリストからの加速を保つのが大好きです。それで、あなたは予想どおりに、しばらくの間上昇し、遅くなり、120pxのオフセットのどこかで終わるようにしたいと思います。質問は、どうですか?
[self.tableView setContentOffset: CGPointMake(0, newOffset) animated: NO];
を使用すると、コンテンツのオフセットは無視されなくなりますが、リストは停止します。
本当にクールなソリューション!基本的にはUITableViewをハッキングしていますが、iOSを使用している私の経験から、あなたはいつも何かをハックする必要があると言うことができます:) – Sulthan
作品は魅力的です –