0

我正在做这个教程,在其中的一部分中我无法得到我想要的结果。

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;
}

作为理想的结果,我希望看到渐变层占据了单元格的整个边界。然而,它只占据从单元的开始和结束大约 1mm 的空间。因此,它没有占据全部边界。

如果我注释掉[super layoutSubviews]它,它会显示完整的渐变,它占据了单元格的完整边界。但这一次,它不显示单元格内的文本。

我无法解决它。任何帮助表示赞赏。

4

2 回答 2

1

下面的评论表明问题看起来像这样

这

解决方案是将单元格的背景设置为清晰的颜色。

于 2012-12-11T22:37:50.847 回答
0

正确的方法是使用 self.contentView.frame 如下:

gradientLayer.frame = self.contentView.frame;
于 2012-12-11T23:55:42.590 回答