2014-03-06 56 views
3

林利用该代码,以在一个UITableView水平对齐truckDayScrollViews(UIScrollView中的子类)的负荷,SUDaysForTruckView仅仅是一个自定义的UILabelcontentOffset上滚动型头复位时的UITableView垂直滚动

-(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。一切都无济于事。

第一张图片显示了水平滚动以及标题如何对齐,第二张图片显示了垂直滚动的第一位发生了什么,标题立即跳出对齐。

During horizontal scrolling, all is aligned.

During vertical scrolling, all is to poop.

+0

是因为我的照片太大? –

回答

0

我结束了重写的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]; 
}