我创建了一个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];
}
这适用于初始布局,但是当选择单元格时,它会从新尺寸重新计算,并在每次选中时有效地缩小单元格。
如何调整此单元格的大小,以便不会不断更改布局。
答案 0 :(得分:0)
layoutSubviews
。我想每当细胞必须突出显示时,它就会被调用。
在任何情况下,您都不希望在那里调整单元格的大小。 drawRect:
就是这个地方。
更好的是,只需使用内置的缩进系统。除非你做的事情非常不寻常,否则它会为你处理这一切。