3

このコードを使用して、truckDayScrollViews (UIScrollView のサブクラス) の負荷を UITableView で水平方向に配置します。SUDaysForTruckView は単なるカスタム UILabel です。

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{

    if ([scrollView isKindOfClass:[SUDaysForTruckView class]]) {
        CGPoint offset=CGPointMake(scrollView.contentOffset.x, 0);
        for (TruckViewCell *cell in self.tableView.visibleCells) {
            cell.truckDayScrollView.contentOffset=offset;

        }
        self.headerView.contentOffset=offset;
        self.scrollViewPosition=offset;
    }
    else{
        NSLog(@"Table view scrolling vertically: %f,%f",self.scrollViewPosition.x,self.scrollViewPosition.y);
        self.headerView.contentOffset=self.scrollViewPosition;
    }
}

スクロールするスクロールビューのクラスがセルの一部である場合 (水平方向にスクロールする場合)、ヘッダーを含むすべてのスクロールビューを更新するという考えです。これはうまくいきます。

ただし、tableView が垂直方向にスクロールすると、ヘッダー スクロール ビューのコンテンツ オフセットは 0,0 にリセットされます。

これはなぜですか、それを修正する方法はありますか。ラインを入れてみました

    self.headerView.contentOffset=self.scrollViewPosition;

非常に多くの場所で、cellForRow、self.headerView のゲッターなど。すべて役に立たない。

最初の図は、水平スクロールとヘッダーがどのように配置されるかを示しています。2 番目の図は、垂直スクロールの最初のビットで何が起こるかを示しています。ヘッダーはすぐに整列しなくなります。

横スクロール時は全て揃えます。

縦スクロール中は、うんちするだけです。

4

1 に答える 1