在我的UITableview中,我创建了一个渐变图层并将其应用于单个单元格。
CAGradientLayer *gradient = [CAGradientLayer layer];
CGRect gradframe = CGRectMake(cell.frame.origin.x, cell.frame.origin.y, self.view.frame.size.width, cell.frame.size.height);
gradient.frame = gradframe;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithRed:.9 green:.9 blue:.9 alpha:1.0] CGColor], (id)[[UIColor colorWithRed:.8 green:.8 blue:.8 alpha:1.0] CGColor], nil];
[cell setBackgroundView:[[UIView alloc] init]];
[cell.backgroundView.layer insertSublayer:gradient atIndex:0] ;
当我滚动屏幕并向后滚动查看单元格时,它们会丢失渐变图层。
我仍然对ios开发有点新意,我们将不胜感激。
编辑:这有时只会发生。当偶尔向上和向下滚动时,将会有一个具有该层的单元格。甚至这些细胞也不一致。
答案 0 :(得分:1)
尝试使用cell.bounds
代替cell.frame
,因为渐变框架应该相对于单元格。 NSLog
如下所示的渐变框架,并验证原点是{0,0}。
NSLog( @"%@", NSStringFromCGRect( gradient.frame ) );
另外,请注意,每次从重用队列中拉出一个单元格时,它仍将被配置为进入重用队列时。因此,您需要确保不向已具有渐变的单元格添加渐变,否则可能会遇到内存问题。
我认为这是你想要的gradframe
CGRect gradframe = CGRectMake(0, 0, self.view.frame.size.width, cell.frame.size.height);