我正在做this tutorial而我无法得到我想要的结果。
我将UITableViewCell
子类化并直接定制了单元格,因为我想为每个单元格添加渐变效果。基本上,我在每个单元格的顶部和底部添加了渐变效果。
以下是我用过的代码:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// add a layer that overlays the cell adding a subtle gradient effect
gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = self.bounds;
gradientLayer.colors = @[(id)[[UIColor colorWithWhite:1.0f alpha:0.2f] CGColor],
(id)[[UIColor colorWithWhite:1.0f alpha:0.1f] CGColor],
(id)[[UIColor clearColor] CGColor],
(id)[[UIColor colorWithWhite:0.0f alpha:0.1f] CGColor]];
gradientLayer.locations = @[@0.00f, @0.01f, @0.95f, @1.00f];
[self.layer insertSublayer:gradientLayer atIndex:0];
}
return self;
}
-(void) layoutSubviews{
[super layoutSubviews];
//ensure that gradient layers occupy the full bounds
gradientLayer.frame = self.bounds;
}
作为一个理想的结果,我想看到gradientLayer占据了单元格的完整边界。但是,它只占用距离电池起点和终点1mm。所以,它没有占据全部界限。
如果我注释掉[super layoutSubviews]
,它会显示完整的渐变,它占据了细胞的完整边界。但这一次,它没有显示细胞内的文本。
我无法解决它。任何帮助表示赞赏。
答案 0 :(得分:1)
以下评论显示问题看起来像这样
解决方案是将细胞的背景设置为清晰的颜色。
答案 1 :(得分:0)
执行此操作的正确方法是使用self.contentView.frame,如下所示:
gradientLayer.frame = self.contentView.frame;