UITableViewCell设置渐变

时间:2014-07-25 20:12:03

标签: ios uitableview

我重写了UITableViewCell类:

@implementation UserTableViewCell

- (void) awakeFromNib {
    UIView *view = [[UIView alloc] initWithFrame:self.frame];
    CAGradientLayer *gradient = [CAGradientLayer layer];
    gradient.frame = view.bounds;
    gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor whiteColor] CGColor], (id)[[UIColor colorWithRed:207/255.0 green:207/255.0 blue:207/255.0 alpha:51/255.0] CGColor], nil];

    [self.layer insertSublayer:gradient atIndex:0];
}

... //特定于此类单元格的其他方法 ...

@end

这很有效。但是,当旋转设备时,单元格渐变不会正确改变。我看到很多在UITableView类中绘制渐变的例子,但是我已经重写了UITableViewCell类,并试图保持渐变代码包含在单元格类中。

tableViewCell没有viewDidLoad,我无法将渐变添加到我的故事板(愚蠢),所以我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

@Keenle是正确的:

- (void) layoutSubviews {
    UIView *view = [[UIView alloc] initWithFrame:self.bounds];
    CAGradientLayer *gradient = [CAGradientLayer layer];
    gradient.frame = view.bounds;
    gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor whiteColor] CGColor], (id)[[UIColor colorWithRed:207/255.0 green:207/255.0 blue:207/255.0 alpha:51/255.0] CGColor], nil];

    [self setBackgroundView:[[UIView alloc] init]];
    [self.backgroundView.layer insertSublayer:gradient atIndex:0];

    [super layoutSubviews];
}

效果很好。