【发布时间】: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