如何在滚动时滚动的UITableView背景中放置渐变?

时间:2017-07-09 09:56:18

标签: ios objective-c uitableview background gradient

我一直在谷歌寻找答案。我找到了this,但它只告诉我关于渐变"背后"表视图,它不可滚动。 还找到this,但它仍然是静态的。 我自己的解决方案是:

-(void)setupGradientBg{
  //background gradient for channel page
  CAGradientLayer *gLayer = [CAGradientLayer layer];
  gLayer.colors = @[
                    (id)[UIColor whiteColor].CGColor,
                    (id)[UIColor blackColor].CGColor
                    ];
  gLayer.startPoint = CGPointMake(0, 0);
  gLayer.endPoint = CGPointMake(1, -1);
  CGRect frame = self.channelInfoTableView.bounds;
  frame.origin.y = frame.origin.y - (self.channelInfoTableView.contentSize.height / 2);
  frame.size.height = self.channelInfoTableView.contentSize.height + (self.channelInfoTableView.contentSize.height / 2);
  gLayer.frame = frame;
  [gLayer setMasksToBounds:YES];
  [self.channelInfoTableView.layer insertSublayer:gLayer atIndex:0];
}

当行是最后一个索引时,在cellForRowAtIndexPath中调用它,但它似乎在每个单元格中重复。

我也尝试在重新加载表视图后调用此方法,但它似乎在上面切(我假设,tableView的图层可能与tableView的内容大小不同)

如果您注意到我的代码,我会扣除其y位置,以便在用户向上滚动时进行扩展,如果用户向下滚动太多,我也会增加高度。

我只是希望渐变图层的大小与表格视图的内容大小相同"因此,如果我在表格视图中向下滚动,则会出现渐变背景。任何人都可以帮我解决这个问题吗?我将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:0)

我放弃了桌面视图。我只需要创建另一个滚动视图并将上面代码的self.channelInfoTableView替换为滚动视图,它就可以工作。