自定义UITableViewCell子视图布局

ran*_*ows 2 iphone cocoa-touch uitableview uikit

我正在创建一个UITableViewCell类似于样式的自定义,UITableViewCellStyleValue1但右侧有一个可编辑的文本字段而不是detailTextLabel.我对如何正确调整编辑字段的大小感到困惑.我想考虑textLabel到帐户的长度,以及它的大小contentView,并且当它的表视图处于编辑模式时,或者如果添加了附件视图(如公开箭头)时,能够做正确的事.

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

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

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

谢谢!兰迪

Jor*_*dan 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];
}
Run Code Online (Sandbox Code Playgroud)

  • 我错过了[super layoutSubviews]; 那些预先给我的东西.谢谢,乔丹. (2认同)