【问题标题】:How can I put a gradient in the background of UITableView that scrolls when you scroll?如何在滚动时滚动的 UITableView 的背景中放置渐变?
【发布时间】:2017-07-09 09:56:18
【问题描述】:

我一直在 Google 中寻找答案。我找到了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 中调用它,但它似乎在每个单元格中重复。

我也试过在重新加载table view后调用这个方法,但是好像被切到上面了(我假设tableView的layer可能和tableView的contentSize大小不一样)

如果您注意到我的代码,我扣除了它的 y 位置以便在用户进一步向上滚动时扩展,并且如果用户向下滚动太多,我还增加了高度。

我只是想让渐变层“与表格视图的内容大小相同”,这样如果我在表格视图中向下滚动,渐变背景就会随之而来。谁能帮我解决这个问题?我将不胜感激,谢谢!

【问题讨论】:

    标签: ios objective-c uitableview background gradient


    【解决方案1】:

    我放弃了表格视图。我只需要制作另一个滚动视图并将上面代码的 self.channelInfoTableView 替换为滚动视图即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-08
      • 2019-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 2018-10-14
      相关资源
      最近更新 更多