如果你把它放在 viewDidAppear 中,它应该可以工作。但是,将大小设置为 self.view.bounds 只会使渐变到屏幕底部——当您滚动时,您的渐变会随之滚动。如果您希望渐变与表格视图一样长,则必须将其高度设置为 contentSize 的高度。您还需要设置单元格的背景颜色以清除以查看渐变(在 tableView:willDisplayCell:forIndexPath:)
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
CAGradientLayer *bgGradient = [CAGradientLayer layer];
bgGradient.frame = CGRectMake(self.tableView.bounds.origin.x, self.tableView.bounds.origin.y, self.tableView.bounds.size.width, self.tableView.contentSize.height);
bgGradient.colors = @[(id)[[UIColor colorWithRed:150/255.0 green:2150/255.0 blue:233/255.0 alpha:1.0] CGColor], (id)[[UIColor colorWithRed:208/255.0 green:210/255.0 blue:216/255.0 alpha:1] CGColor]];
bgGradient.locations = @[@0.02f,@1.00f];
[bgGradient setMasksToBounds:YES];
[self.view.layer insertSublayer:bgGradient atIndex:0];
}
这种方法的一个问题是渐变的长度以及外观会根据表格视图中的行数而变化。如果您希望渐变保持相同的长度,您可能希望将其添加到窗口中(并使表格视图的背景颜色清晰)。