1

ページング距離を設定したい水平の UITableView があります。このアプローチを試みたのですが、

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    _tableView.decelerationRate = UIScrollViewDecelerationRateFast;
    CGFloat pageSize = 320.f / 3.f;
    CGPoint contentOffset = _tableView.contentOffset;
    contentOffset.y = roundf(contentOffset.y / pageSize) * pageSize;
    [_tableView setContentOffset:contentOffset animated:YES];
}

これは、ゆっくりスクロールして手放すと機能しますが、速くスクロールすると、多くのポップが発生します。しばらく悩んだ末、別の方法を試してみようと思います...

tableView でページングを有効にしてから、テーブルの幅を目的のページング サイズ (画面の幅の 3 分の 1) に設定するだけです。clipsToBounds = NO も設定します。このアプローチを使用すると、スクロールは期待どおりに機能しますが、小さなテーブル幅の外側のセルは描画されません。私が望むのは、UITableView のフレームの外にあるにもかかわらず、現在のセルの左右のセルを強制的に描画することです。cellForRowAtIndexPath get がより深いレベルから呼び出されることは知っていますが、選択したセルに対して自分でトリガーできる方法はありますか?

使ってみましたが、

[[_tableView cellForRowAtIndexPath:indexPath] setNeedsDisplay];

しかし、それは何もしませんgggggg!

4

0 に答える 0