Tag: uicollectionview flowlayout

UICollectionViewanimation单元大小更改会导致不希望的行为

我有一个UICollectionViewController使用标准的UICollectionViewFlowLayout来显示一个垂直的单元格列。 我试图在单元格点击时在单元格上创build展开/折叠animation。 我使用下面的代码来完成这个: – (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath (NSIndexPath *)indexPath { [self.feedManager setCurrentlySelectedCellIndex:indexPath.item]; [self.collectionView performBatchUpdates:nil completion:nil]; } – (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { //Return the size of each cell to draw CGSize cellSize = (CGSize) { .width = 320, .height = [self.feedManager heightForCellAtIndexPath:indexPath] }; return cellSize; } pipe理对象上的'selectedCellIndex'属性告诉数据模型在heightForCellAtIndexpath中返回展开或折叠的大小: [self.collectionView performBatchUpdates:nil completion:nil]; 然后performBatchUpdates:completiong:方法dynamic地改变这个尺寸的改变。 然而! 当animation发生时,展开的单元格可能会使屏幕底部的部分可见单元格离开屏幕。 如果是这种情况,我随后折叠这个单元格,现在的非屏幕单元格将会捕捉到它的旧位置,而没有animation,而所有其他可见单元格将根据需要animation。 […]

如何设置UICollectionViewDelegateFlowLayout?

UIViewController维护对UICollectionView的引用。 控制器应该使用UICollectionViewDelegateFlowLayout修改内置的stream布局。 将视图的数据源设置为self很容易: MyViewController.m – (void)viewDidLoad { self.collectionView.dataSource = self; } 但是,如何将控制器设置为视图的委托stream布局? – (void)viewDidLoad { self.collectionView.dataSource= self; // self.collectionView.??? = self; } 我试过了: – (void)viewDidLoad { self.collectionView.dataSource= self; self.collectionView.collectionViewLayout = self; } 但我得到的错误:“不兼容的指针types分配…”。 集合头文件如下所示: MyViewController.h @interface MyViewController : UIViewController <UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>