21

にかなり大きな画像を表示していUITableViewます。ユーザーがスクロールすると、テーブル ビューで常に中央の写真が真ん中にスナップされるようにしたいと思います。つまり、テーブルが静止状態にある場合、テーブルは常にUITableViewCell中央にスナップされます。

どうやってこれを行うのですか?

4

7 に答える 7

6

@jszumski が投稿したものから構築し、ドラッグ中にスナップを発生させたい場合は、次のコードを使用します。

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    [self centerTable];
}

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
    [self centerTable];
}

- (void)centerTable {
    NSIndexPath *pathForCenterCell = [self.tableView indexPathForRowAtPoint:CGPointMake(CGRectGetMidX(self.tableView.bounds), CGRectGetMidY(self.tableView.bounds))];

    [self.tableView scrollToRowAtIndexPath:pathForCenterCell atScrollPosition:UITableViewScrollPositionMiddle animated:YES];
}
于 2013-10-21T23:21:37.257 に答える
6

上記の@ jesse-rusakの回答を拡張すると、これは、高さが可変のセルがある場合に UITableViewController サブクラスに追加する必要があるコードです。これにより、受け入れられた回答での二重スクロールの問題が回避されます。

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
    NSIndexPath *pathForTargetTopCell = [self.tableView indexPathForRowAtPoint:CGPointMake(CGRectGetMidX(self.tableView.bounds), targetContentOffset->y)];
    targetContentOffset->y = [self.tableView rectForRowAtIndexPath:pathForTargetTopCell].origin.y;
}
于 2014-03-26T21:24:20.847 に答える
-3

UITableView は UIScrollView を拡張します...

myTableView.pagingEnabled = YES 
于 2013-08-12T21:51:49.523 に答える