我有一些较旧的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;
}
答案 0 :(得分:2)
您仍然可以使用自动调整大小的掩码
view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
如果您将其粘贴,请右键单击UIViewAutoresizingFlexibleWidth并单击“跳转到定义”,您将看到其他可用选项,它非常直接。