Closed coderGui closed 6 years ago
文件:LBPhotoBrowserShowHelper.h static inline int lb_currentSelectImageViewIndex() { UICollectionView *currentCollectionView = [LBPhotoBrowserManager defaultManager].currentCollectionView; return (int)(currentCollectionView.contentOffset.x / SCREEN_WIDTH); }
return (int)(currentCollectionView.contentOffset.x / SCREEN_WIDTH); 应该替换成 return (int)(currentCollectionView.contentOffset.x / currentCollectionView.width);
因为在创建CollectionView 时候,使用了 collectionView.contentInset = UIEdgeInsetsMake(0, 0, 0, 20); UICollectionView *collectionView = [[UICollectionView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH + 20, SCREEN_HEIGHT) collectionViewLayout:flowLayout]; flowLayout.minimumLineSpacing = 20;
这样根据屏幕宽度计算索引时每个元素相差20,导致计算索引位置不正确。比正常值大。 列: iPhone 6。 屏幕宽度 375,每个相差20。 375/20 = 18.75. 在这个临界值以后索引就会出现问题。
嗯嗯,我马上修改
文件:LBPhotoBrowserShowHelper.h static inline int lb_currentSelectImageViewIndex() { UICollectionView *currentCollectionView = [LBPhotoBrowserManager defaultManager].currentCollectionView; return (int)(currentCollectionView.contentOffset.x / SCREEN_WIDTH); }
return (int)(currentCollectionView.contentOffset.x / SCREEN_WIDTH); 应该替换成 return (int)(currentCollectionView.contentOffset.x / currentCollectionView.width);
因为在创建CollectionView 时候,使用了 collectionView.contentInset = UIEdgeInsetsMake(0, 0, 0, 20); UICollectionView *collectionView = [[UICollectionView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH + 20, SCREEN_HEIGHT) collectionViewLayout:flowLayout]; flowLayout.minimumLineSpacing = 20;
这样根据屏幕宽度计算索引时每个元素相差20,导致计算索引位置不正确。比正常值大。 列: iPhone 6。 屏幕宽度 375,每个相差20。 375/20 = 18.75. 在这个临界值以后索引就会出现问题。