无法在UICollectionView中调整单元格间距

时间:2016-02-24 05:47:53

标签: ios iphone ipad swift2 uicollectionviewcell

我在Swift中实现了collectionView,

但是当我在更大屏幕的iPhone中检查时,单元格之间的间距会增加。

这是iphoen 5s 的例子 1

这是iphone 6 的示例 2

这是我的xcode设计 3

我在哪里弄错了? 任何人都可以帮助我..

提前谢谢!

4 个答案:

答案 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)
 }