我正在尝试创建一个UITableViewCell,它会覆盖内容的完整绘图。我已经覆盖了正在调用的drawRect,但它仍然绘制了默认内容。
如何让它停止绘制默认内容?如何用自己的渲染替换它?
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
DLog (@"Overloaded TableCell initWithStyle");
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
}
return self;
}
- (void)drawRect:(CGRect)rect {
DLog (@"TableCell::drawRect");
// expecting it to draw nothing
}
答案 0 :(得分:9)
Loren Brichter(Tweetie的作者)在iTunes U Stanford iPhone编程课程讲座中谈到了这一点。他说他通过继承UITableViewCell并直接绘制每个单元格的内容得到了很好的滚动性能结果,他在his blog post on the subject中给出了一个代码示例。
他还指出,苹果在其中一个代码示例中添加了a similar example。
答案 1 :(得分:3)
答案 2 :(得分:1)
尝试创建UIView的子类(使用您自己的drawRect
)并将其分配给表格单元格contentView
。
答案 3 :(得分:0)
您是否考虑过使用Interface Builder创建自定义UITableViewCell?
创建你的xib,然后像这样加载它:
static NSString *CellIdentifier = @"Cell";
cell = (MyCustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"TableCell" owner:self options:nil];
cell = [nibContents objectAtIndex:0];
}
// do your customization
return cell;
请注意,实际单元格位于xib中的索引0处。
干杯...