在UITableView中垂直滚动时,contentOffset在ScrollView标题上重置
我利用这个代码来alignment一个UITableView中的truckDayScrollViews(UIScrollView的子类)的负载水平,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的getter等等。 一切都无济于事。
第一张图片显示了水平滚动和标题如何alignment,第二张图片显示了垂直滚动的第一位发生了什么,标题立即跳出alignment。
我结束了覆盖drawRect:在垂直滚动之前,我得到scrollViews的当前内容偏移量。 然后,我需要一些额外的东西来阻止我所有的观点有一个黑色的背景。
- (void)drawRect:(CGRect)rect { [super drawRect:rect]; CGContextRef ctx = UIGraphicsGetCurrentContext(); CGFloat white[] = {1, 1, 1, 1}; CGContextSetFillColor(ctx, white); CGContextAddRect(ctx, rect); CGContextFillPath(ctx); self.contentOffset=[self.scrollViewMaster scrollViewPosition]; }