我正在使用带有流布局的UICollectionView,根据我的需要,它的单元格大小不一,所以我已经将sizeForItemAtIndexPath委托方法实现为......
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
CGSize estimatedSize;
estimatedSize.width = collectionView.frame.size.width - 2* MARGIN_8;
CGSize questionSize=[self sizeOfText:myData[indexPath.row] constraintWidth:estimatedSize.width constraintsHeight:MAXFLOAT andFont:CELL_FONT];
estimatedSize.height = ceil(questionSize.height>MINIMUM_HEIGHT_OF_OPTION_TEXT?questionSize.height:MINIMUM_HEIGHT_OF_OPTION_TEXT);return estimatedSize;}
现在,问题在于调用reloaItemAtItem方法来更新所选单元格,如......
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
userSelection = (int)indexPath.row;
[self.collectionView reloadItemsAtIndexPaths:@[indexPath]];}
它说
UICollectionView recieved layout attributes for a cell with an index path that does not exist: <NSIndexPath: 0x147a0190> {length = 2, path = 1 - 0}
并且屏幕停止响应。但是当为所有单元格提供相同的大小时,这个问题就不会出现,而且工作正常。任何人都能说出问题是什么?
答案 0 :(得分:0)
要使用不同大小的单元格创建集合视图,您需要根据以下链接实现自定义流程布局:
https://bradbambara.wordpress.com/2014/05/24/getting-started-with-custom-uicollectionview-layouts/
当app处于横向模式时,我有同样的要求在一个部分中显示两个单元格,如果它处于纵向模式,则在每个部分中显示一个单元格,我已经在下面的链接上分享了它的演示:
https://drive.google.com/file/d/0BzVs5BNlAI6qdjcwcnVHN1Z5NW8/view
我希望这会对你有所帮助。