调整UITableViewCell的大小

时间:2010-05-12 20:25:50

标签: iphone uitableview

我创建了一个UITableViewCell派生类,它调整自身大小以在缩进级别显示。我已经尝试使用ViewControllers cellForRowAtIndexPath中的以下设置indentationLevel和indentationWidth:

cell.indentationLevel = [[item objectForKey:@"indent"] intValue];
cell.indentationWidth = CELL_INDENT_SIZE;

这本身并没有缩进单元格,所以我在UITableViewCell中使用了以下layoutSubviews:

-(void)layoutSubviews {
    CGFloat indentSize = (self.indentationLevel - 1) * self.indentationWidth;
    CGRect r = containerView.frame;
    containerView.frame = CGRectMake (r.origin.x + indentSize, r.origin.y, r.size.width - indentSize, r.size.height);
    DLog(@"frameRect : %f, %f, %f, %f, %f",indentSize, r.origin.x, r.origin.y, r.size.width, r.size.height);
    [super layoutSubviews];
}

这适用于初始布局,但是当选择单元格时,它会从新尺寸重新计算,并在每次选中时有效地缩小单元格。

如何调整此单元格的大小,以便不会不断更改布局。

1 个答案:

答案 0 :(得分:0)

每次单元格必须重绘时,都会调用<{layoutSubviews。我想每当细胞必须突出显示时,它就会被调用。

在任何情况下,您都不希望在那里调整单元格的大小。 drawRect:就是这个地方。

更好的是,只需使用内置的缩进系统。除非你做的事情非常不寻常,否则它会为你处理这一切。