Ios 在我的应用程序中,我使用了uicollectionview,那么如何区分所有iPhone型号中相同的两个手机呢?

Ios 在我的应用程序中,我使用了uicollectionview,那么如何区分所有iPhone型号中相同的两个手机呢?,ios,objective-c,swift,Ios,Objective C,Swift,在我的应用程序中,我使用UIcollectionview,然后在所有iPhone型号中如何区分两个相同的手机。打开自动布局我尝试了很多方法,但问题没有解决我的应用在iPhone 5s上看起来很完美,但它显示了iPhone 6s和6s plus中两个单元格之间的更多差异。您需要根据屏幕大小动态计算单元格。我已经面对了这样的情况,并且解决了它。你可以试试这个,也许对你有帮助 - (CGSize)collectionView:(UICollectionView *)collectionView lay

在我的应用程序中,我使用UIcollectionview,然后在所有iPhone型号中如何区分两个相同的手机。打开自动布局我尝试了很多方法,但问题没有解决我的应用在iPhone 5s上看起来很完美,但它显示了iPhone 6s和6s plus中两个单元格之间的更多差异。

您需要根据屏幕大小动态计算单元格。我已经面对了这样的情况,并且解决了它。你可以试试这个,也许对你有帮助

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
return CGSizeMake(width, height);
}
获取宽度和高度

-(void)getDynamicCellSize {

width = (SCREEN_SIZE.width - 50)/3;
height = (SCREEN_SIZE.height - (135+self.tabBarController.tabBar.frame.size.height)-29)/3;
} // 135 means the navigation bar height + segment control (I have in my design) 

CGFloat width, height;// Declare globally
在ViewWillAspect或didLoad中调用getDynamicCellSize方法

或 在“SWIFT”中的sizeForItemAtIndexPath方法中使用此代码

let flowLayout = collectionViewLayout as! UICollectionViewFlowLayout
let cellWidth = (CGRectGetWidth(collectionView.frame) - (flowLayout.sectionInset.left + flowLayout.sectionInset.right) - flowLayout.minimumInteritemSpacing) / 2
return CGSize(width: cellWidth, height: cellWidth)

快乐编码…

不使用SWIFT我将您的OBJ C代码转换为SWIFT但不工作。事实上,我不熟悉SWIFT。你把代码转换正确了吗。。?它的输出应该与前一个相同..?如何获得屏幕大小?在常量类中放入此#定义屏幕大小([[UIScreen mainScreen]bounds].SIZE),它将在整个项目中重复使用