Objective c 具有不同项目大小的CollectionView不适用于Iphone 6plus

Objective c 具有不同项目大小的CollectionView不适用于Iphone 6plus,objective-c,uicollectionview,iphone-6-plus,Objective C,Uicollectionview,Iphone 6 Plus,我正在尝试创建一个包含不同大小项目的图像集合视图。在collectionview中,我想要两个项目(一个大一个小)来填充一个屏幕行。我写的是 itemWith = (collectionviewWidth) / 2.69; smallerSize = CGSizeMake(itemWith, itemWith * 1.3); biggerSize = CGSizeMake(itemWith * 1.69, itemWith * 1.3); 我已经使用UICollectionViewFlowLa

我正在尝试创建一个包含不同大小项目的图像集合视图。在collectionview中,我想要两个项目(一个大一个小)来填充一个屏幕行。我写的是

itemWith = (collectionviewWidth) / 2.69;
smallerSize = CGSizeMake(itemWith, itemWith * 1.3);
biggerSize = CGSizeMake(itemWith * 1.69, itemWith * 1.3);
我已经使用UICollectionViewFlowLayout来确保项目之间没有空格,如下所示

setMinimumInteritemSpacing = 0
setMinimumLineSpacing = 0
return UIEdgeInsetsZero on method "insetForSectionAtIndex"
这种布局在iPhone5和iPhone6上非常有效,每两个项目将填充一行,以此类推。但当我在iphone6plus上运行时,第二项是推到下一行


我想原因是6plus的渲染像素是3x,而iphone5和6的渲染像素是2x。但我不确定,也不知道如何修复它。任何人都可以帮助我解释它,并告诉我如何使我的布局在所有类型的设备上正确工作。非常感谢

您应该对委托方法中的
UICollectionViewCell
的大小进行所有计算:

-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
此外,您可能需要使用
autolayout
而不是手动设置框架:6+的更大屏幕属性将由它来处理