我有一个非常简单的UITableViewCell
子类。 MyTableViewCell.h
:
#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
@interface MyTableViewCell : UITableViewCell {
CALayer *backgroundLayer;
}
@end
MyTableViewCell.m
:
#import "MyTableViewCell.h"
#import <QuartzCore/QuartzCore.h>
@implementation MyTableViewCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
backgroundLayer = [[CALayer alloc] init];
[backgroundLayer setBackgroundColor:[[UIColor yellowColor] CGColor]];
[[self layer] addSublayer:backgroundLayer];
}
return self;
}
- (void)layoutSublayersOfLayer:(CALayer *)layer {
[backgroundLayer setFrame:[layer frame]];
[super layoutSublayersOfLayer:layer];
}
- (void)dealloc {
[backgroundLayer release];
[super dealloc];
}
@end
奇怪的是,结果如下:。
有人能解释一下吗?!为什么图层不是在所有单元格中绘制,而是仅在每隔一个单元格中绘制一次?
编辑:这是我的tableView:cellForRowAtIndexPath:
方法:
static NSString *reuseIdentifier = @"cellReuseIdentifier";
MyTableViewCell *cell = (MyTableViewCell *)[aTableView dequeueReusableCellWithIdentifier:reuseIdentifier];
if (cell == nil)
cell = [[[MyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier] autorelease];
return cell;
答案 0 :(得分:0)
使用这种方法可以解决问题:
- (void)layoutSublayersOfLayer:(CALayer *)layer {
CGRect frame = [layer frame];
frame.origin = CGPointZero;
[backgroundLayer setFrame:frame];
[super layoutSublayersOfLayer:layer];
}
答案 1 :(得分:0)
虽然与您的问题无关,但您应该将图层添加到[self.contentView图层]。否则,删除 - 滑动等编辑功能将无法正确呈现。