【问题标题】:contentOffset is reset on ScrollView header when vertical scrolling in UITableView在 UITableView 中垂直滚动时,在 ScrollView 标头上重置 contentOffset
【发布时间】:2014-04-08 22:28:03
【问题描述】:

我正在使用此代码在 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垂直滚动时,header滚动视图中的内容偏移量被重置为0,0。

为什么会这样,有没有办法解决它。我试过把这条线

    self.headerView.contentOffset=self.scrollViewPosition;

在很多地方 cellForRow,self.headerView 等的 getter。都无济于事。

第一张图片显示水平滚动和标题如何对齐,第二张图片显示垂直滚动的第一个位发生的情况,标题立即跳出对齐。

【问题讨论】:

  • 是不是我的图片太大了??

标签: ios uiscrollview contentoffset uitableview


【解决方案1】:

我最终覆盖了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];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多