#ios #objective-c #dynamic #uicollectionview #cgsize
#iOS #objective-c #динамический #uicollectionview #cgsize
Вопрос:
У меня есть представление коллекции из 3 столбцов и нескольких строк. В моем sizeForItemAtIndexPath
случае я возвращаю динамику CGSize
следующим образом :
return CGSizeMake(_sponsoredCollectionView.frame.size.width/3 - 7, (_sponsoredCollectionView.frame.size.width/3 - 7 nameHeight cuisineHeight addressHeight timingHeight paddings));
Но при указанном размере моя последняя ячейка не отображается (я не понимаю почему, потому что возвращаемая высота аналогична предыдущим ячейкам, и для ее отображения достаточно места, как и для предыдущих ячеек), см. скриншот ниже :
И когда я жестко задаю размер до следующего :
return CGSizeMake(_sponsoredCollectionView.frame.size.width/3 - 7,250);
Она показана (ячейка с заголовком KEKOU, но, очевидно, с большим количеством пустых мест сверху и снизу из-за высоты жесткого кода 250, см. скриншот ниже :
Кроме того, я делаю следующее, чтобы CollectionView изменял размер в соответствии с ячейками после реальной загрузки
[_sponsoredCollectionView reloadData];
dispatch_async(dispatch_get_main_queue(), ^{
_sponsoredCollectionViewHeightConstraint.constant = _sponsoredCollectionView.collectionViewLayout.collectionViewContentSize.height 0;
});
Я не могу понять, в чем проблема: S Пожалуйста, помогите!
Комментарии:
1. Пожалуйста, кто-нибудь может помочь? Пытался слишком долго, но не смог решить
Ответ №1:
Наконец, после целой ночи проб и ошибок и исследований, я решил это, просто изменив _sponsoredCollectionViewHeightConstraint.constant
внутри performBatchUpdates
вот так :
[_sponsoredCollectionView reloadData];
dispatch_async(dispatch_get_main_queue(), ^{
[self.sponsoredCollectionView performBatchUpdates:^{
_sponsoredCollectionViewHeightConstraint.constant = _sponsoredCollectionView.collectionViewLayout.collectionViewContentSize.height 5;//_sponsoredCollectionView.contentSize.height 5;
} completion:nil];
});