我重写了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,我无法将渐变添加到我的故事板(愚蠢),所以我不知道该怎么做。
答案 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];
}
效果很好。