使用 Masonry 自动布局 UITableViewCell

Use Masonry autolayout UITableViewCell

我正在尝试使用自动布局自动调整 table 单元格的大小。但似乎 TableView 忽略了高度限制。

在UItableviewCell:

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {

self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {

        [self.icon mas_makeConstraints:^(MASConstraintMaker *make) {

        make.top.equalTo(self.contentView).with.offset(10);
        make.left.equalTo(self.contentView).with.offset(10);
        make.width.equalTo(@70);
//            make.height.equalTo(@70);
        make.bottom.equalTo(self.contentView.mas_bottom).with.offset(10);
    }];
  }
}

在 UITableView

XLTableViewCell * _cell = [[XLTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"1"];



-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    CGSize size = [_cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
    NSLog(@"%f",size.height);

    // size.height is 0.0f;
    return size.height + 1;
}

我正在尝试在 UITableViewCell 中创建图像 (70x70)。 image.top = 10,image.left = 10,image.bottom = 10。

每当我们向具有可变高度的组件添加约束时,不要将其从 bottom.Just 中添加一些恒定高度约束并更新该恒定值。

make.height.constant = 一些值

并更新视图约束

使用其中之一

  • (void)updateConstraintsIfNeeded NS_AVAILABLE_IOS(6_0); // 从底部向上更新以接收器为根的视图层次结构的约束。 UIWindow 的实现会在必要时首先创建一个布局引擎。
  • (void)updateConstraints NS_AVAILABLE_IOS(6_0); // 重写它以在约束更新过程中调整您的特殊约束 pass
  • (BOOL)needsUpdateConstraints NS_AVAILABLE_IOS(6_0);
  • (void)setNeedsUpdateConstraints NS_AVAILABLE_IOS(6_0);