我在Swift中实现了collectionView,
但是当我在更大屏幕的iPhone中检查时,单元格之间的间距会增加。
这是iphoen 5s 的例子 1:
这是iphone 6 的示例 2:
这是我的xcode设计 3:
我在哪里弄错了? 任何人都可以帮助我..
提前谢谢!
答案 0 :(得分:1)
这解决了我的问题..
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
{
return CGSizeMake((UIScreen.mainScreen().bounds.width-15)/2,208); //use height whatever you wants.
}
答案 1 :(得分:0)
我认为你应该使用自动布局来使你的单元格的宽度减去CollectionView的宽度的一半,减去一些点,但我不确定这是否可以在故事板中设置,我主要在代码,使用' collectionViewFlowLayout.setItemSize'设置相对于屏幕宽度的项目大小,或者UICollectionViewDelegateFlowLayout也可以;
答案 2 :(得分:0)
这样做:
func collectionView(collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
{
collectionData.contentInset=UIEdgeInsetsMake(0,0,0,0)
let screensize:CGRect=UIScreen.mainScreen().bounds
let width=screensize.width
if (width==320)
{
let size:CGSize=CGSizeMake(129,140)
collectionData.contentInset=UIEdgeInsetsMake(0,10,0,10)
return size
}
else if(width==375)
{
let size:CGSize=CGSizeMake(166,181)
collectionData.contentInset=UIEdgeInsetsMake(0,0,0,0)
return size
}
else if(width==414)
{
if(UIDevice.currentDevice().orientation .isLandscape)
{
let size:CGSize=CGSizeMake(300,185)
collectionData.contentInset=UIEdgeInsetsMake(0,0,0,0)
print("com,ing inside orientatiom");
return size
}
let size:CGSize=CGSizeMake(177,185)
collectionData.contentInset=UIEdgeInsetsMake(0,0,0,0)
return size
}
let size:CGSize=CGSizeMake(358,292)
return size
}
答案 3 :(得分:0)
您可以调整所有设备的公共空间 - objective c version
- (CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
CGFloat height = self.view.frame.size.height;
CGFloat width = self.view.frame.size.width;
// in case you you want the cell to be 40% of your controllers view
return CGSizeMake(width*0.4,height*0.4)
}