iOS contentStretch已被弃用,如何拉伸表格单元格?

时间:2014-11-29 17:09:47

标签: ios uitableview

我有一些较旧的iOS代码,其中包含一个源自UITableViewCell的通用自定义复合子视图,它覆盖setFrame并使用contentStretch来实现调整大小。这是一个通用的自定义Table View Cell类,我可以用它在表行(UITableViewController)中显示我想要的任何内容。

contentStretch已被弃用了一段时间(iOS6),但我没有看到有关如何重写使用contentStretch的非基于图像的代码的任何内容。这就是我现在所拥有的:

- (void)setFrame:(CGRect)frame
{
    [super setFrame:frame];

    [UIView setAnimationsEnabled:NO];
    CGSize contentSize = cellContentView.bounds.size;
    cellContentView.contentStretch = CGRectMake(225.0 / contentSize.width, 0.0, (contentSize.width - 260.0) / contentSize.width, 1.0);
    [UIView setAnimationsEnabled:YES];
}

更新

看来我可以摆脱我的setFrame覆盖,只需在initWithStyle中设置自动调整大小的掩码,就像这样:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
        cellContentView = [[CompositeSubviewBasedResortCellContentView alloc] initWithFrame:CGRectInset(self.contentView.bounds, 0.0, 1.0) cell:self];
        cellContentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
        cellContentView.contentMode = UIViewContentModeRedraw;
        [self.contentView addSubview:cellContentView];
    }

    return self;
}

1 个答案:

答案 0 :(得分:2)

您仍然可以使用自动调整大小的掩码

view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

如果您将其粘贴,请右键单击UIViewAutoresizingFlexibleWidth并单击“跳转到定义”,您将看到其他可用选项,它非常直接。