我有UITableView与单元格,并在每个单元格中我想添加自定义视图。我创建了xib文件MyView.xib,我创建了一个类,它是UIView类的扩展,名为MyView。在xib文件中,我添加了File&#39的Owner类为MyView。
在UITableViewCell中添加此自定义视图时,我希望该自定义视图具有动态高度。这就是我在init方法中添加此代码的原因。
- (id)initWithCoder:(NSCoder *)aDecoder{
self = [super initWithCoder:aDecoder];
if (self) {
// 1. load the interface
[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:self options:nil];
// 2. add as subview
[self addSubview:self.view];
// 3. allow for autolayout
[self.view setTranslatesAutoresizingMaskIntoConstraints:NO];
// 4. add constraints to span entire view
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[view]|" options:0 metrics:nil views:@{@"view":self.view}]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[view]|" options:0 metrics:nil views:@{@"view":self.view}]];
[self setStyle];
}
return self;
}
重要提示是我使用storyboard创建tableView。所以我有一个原型单元格的表视图,我在这里添加我的自定义视图与其他内容。我正在使用自动布局。
现在问题是当我运行应用程序时,几个可见单元格的高度错误(自定义视图不完全可见)。当我向下滚动时,下一个单元格具有良好的高度(自定义视图可见),当我向后滚动时,列表顶部的几个单元格的高度是正确的。
第一次加载清单时,有人能告诉我如何解决这个细胞高度问题吗?
答案 0 :(得分:0)
尝试
- (void)awakeFromNib {
[super awakeFromNib];
// 1. load the interface
[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:self options:nil];
// 2. add as subview
[self addSubview:self.view];
// 3. allow for autolayout
[self.view setTranslatesAutoresizingMaskIntoConstraints:NO];
// 4. add constraints to span entire view
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[view]|" options:0 metrics:nil views:@{@"view":self.view}]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[view]|" options:0 metrics:nil views:@{@"view":self.view}]];
[self setStyle];
}