Динамическая высота UITableViewCell с помощью UICollectionView

У меня есть UITableView с UICollectionView в каждой ячейке. Моя проблема в том, что высота UITableView никогда не принимала высоту содержимого UICollectionView . Когда я изменяю UICollectionView на метку, UITabelViewCell правильно устанавливает высоту в соответствии с высотой текста метки. Я пробовал много разных вещей, но ничего не работал, и я не хочу вычислять высоту для каждой ячейки в heightForRowAtIndexPath также потому, что я не знаю контента в тот момент и потому, что мне это действительно нужно, из-за большого набора разные клетки. То, что у меня есть в данный момент:

NewsFeedViewController

 @interface NewsFeedViewController () @property (weak, nonatomic) IBOutlet NewsFeedTableView * newsFeedTableView; @end @implementation NewsFeedViewController - (void)viewDidLoad { [super viewDidLoad]; self.newsFeedTableView.rowHeight = UITableViewAutomaticDimension; self.newsFeedTableView.estimatedRowHeight = 244.0; // Do any additional setup after loading the view. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end 

NewsFeedTableView

 @interface NewsFeedTableView () <UITableViewDataSource, UITableViewDelegate> @end @implementation NewsFeedTableView #pragma mark - Init -(void) commonInit { self.delegate = self; self.dataSource = self; [self registerNib:[UINib nibWithNibName:@"NewsFeedPostTableViewCell" bundle:nil] forCellReuseIdentifier:@"NewsFeedPostTableViewCell"]; } - (id)initWithCoder:(NSCoder*)aDecoder { if(self = [super initWithCoder:aDecoder]) { [self commonInit]; } return self; } -(id)initWithFrame:(CGRect)frame { if ((self = [super initWithFrame:frame]) != nil) { [self commonInit]; } return self; } -(id)initWithFrame:(CGRect)frame style:(UITableViewStyle)style { if ((self = [super initWithFrame:frame style:style]) != nil) { [self commonInit]; } return self; } #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 2; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NewsFeedTableViewCell *cell; cell = (NewsFeedTableViewCell *)[self configCellAtIndexPath:indexPath forTableView:tableView]; return cell; } - (UITableViewCell *)configCellAtIndexPath:(NSIndexPath *)indexPath forTableView:(UITableView *)tableView { NewsFeedTableViewCell *cell; static NSString * cellNewCrewId = @"NewsFeedPostTableViewCell"; cell = [self dequeueReusableCellWithIdentifier:cellNewCrewId]; return cell; } @end 

NewsFeedPostTableViewCell

 @implementation NewsFeedPostTableViewCell - (void)awakeFromNib { // Initialization code } - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; // Configure the view for the selected state } @end 

MemberListCollectionView

 @implementation MemberListCollectionView #pragma mark - LifeCycle - (id)initWithCoder:(NSCoder *)aDecoder { if ((self = [super initWithCoder:aDecoder])) { [self initLayout]; } return self; } - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self initLayout]; } return self; } - (void)initLayout { self.delegate = self; self.dataSource = self; [self registerClass:[MemberListCollectionViewCell class] forCellWithReuseIdentifier:@"MemberListCollectionViewCell"]; } - (void)awakeFromNib { [self initLayout]; } #pragma mark - UICollectionView delegate methods - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { return 1; } - (NSInteger)collectionView:(UICollectionView *)view numberOfItemsInSection:(NSInteger)section { return 2; } - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { MemberListCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MemberListCollectionViewCell" forIndexPath:indexPath]; [self configCell:cell cellForItemAtIndexPath:indexPath]; //[[cell contentView] setFrame:[cell bounds]]; //[[cell contentView] setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight]; return cell; } - (void) configCell:(MemberListCollectionViewCell *)cell cellForItemAtIndexPath:(NSIndexPath *)indexPath { CGFloat hue = ( arc4random() % 256 / 256.0 ); // 0.0 to 1.0 CGFloat saturation = ( arc4random() % 128 / 256.0 ) + 0.5; // 0.5 to 1.0, away from white CGFloat brightness = ( arc4random() % 128 / 256.0 ) + 0.5; // 0.5 to 1.0, away from black UIColor *color = [UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:1]; cell.backgroundColor = color; } 

введите описание изображения здесь

Извините за стену кода, но я хотел предоставить вам все, что я также пробовал из

UICollectionView внутри UITableViewCell – динамическая высота?

UICollectionVIEW внутри UITableViewCell, как получить динамическую высоту с автозапуском

Я также использую макет для моего CollectionView, см. Https://github.com/fmitech/FMMosaicLayout, возможно, макет применяется после всех вычислений, и это вызывает мою проблему. У меня исходит из идей, может быть, у кого-то есть и может указать мне в правильном направлении.

Давайте будем гением компьютера.