自定义UITableViewCell子视图布局

时间:2010-09-16 20:56:40

标签: iphone cocoa-touch uikit uitableview

我正在创建一个自定义UITableViewCell,其风格类似于UITableViewCellStyleValue1,但右侧有一个可编辑的文本字段,而不是detailTextLabel。我对如何正确调整编辑字段的大小感到困惑。我想考虑textLabel的长度以及contentView的大小,并且能够在其表格视图处于编辑模式时执行正确的事情,或者如果附件视图(如披露箭头)已添加。

但是contentView的宽度似乎总是320(在iPhone上以纵向模式),即使对于分组表也是如此。在我的UITableViewCell子类中,我看不到访问它所属的表视图的方法,因此我可以获得表格的样式并相应地调整边距。

我想我可以在tableView的委托-tableView:willDisplayCell:forRowAtIndexPath:方法中以自定义方式处理它,但这完全违背了具有可重用单元类的目的。

我必须在这里遗漏一些关键概念,但我不知所措。任何人吗?

谢谢! 好色

2 个答案:

答案 0 :(得分:6)

您可能想要在UITableViewCell子类中控制您的布局。例如:

- (void)layoutSubviews
{
    CGRect b = [self bounds];
    b.size.width += 30; // allow extra width to slide for editing
    b.origin.x -= (self.editing) ? 0 : 30; // start 30px left unless editing
    [contentView setFrame:b];
    // then calculate (NSString sizeWithFont) and addSubView, the textField as appropriate...
    // 
    [super layoutSubviews];
}

答案 1 :(得分:0)

我认为边距是单元格的一部分,而不是表格,所以这就是为什么contentView总是320宽。也许我不明白这个问题。

相关问题