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

Posted

技术标签:

【中文标题】无法调整 UICollectionView 中的单元格间距【英文标题】:Unable to adjust cell spacing in UICollectionView 【发布时间】:2016-02-24 05:47:52 【问题描述】:

我已经在 Swift 中实现了 collectionView,

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

这是iphoen 5s1的例子:

这是iphone 6的例子2:

这是我的xcode设计3:

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

提前致谢!

【问题讨论】:

检查这个...***.com/questions/17229350/… 也检查一下***.com/questions/28872001/… 【参考方案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.
    

【讨论】:

【参考方案2】:

我认为您应该使用自动布局使单元格的宽度为 CollectionView 宽度的一半并减去一些点,但我不确定这是否可以在情节提要中设置,我主要在代码中执行此操作,使用“collectionViewFlowLayout.setItemSize”设置相对于屏幕宽度的项目大小,或者 UICollectionViewDelegateFlowLayout 也可以;

【讨论】:

【参考方案3】:

这样做:

 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


    

【讨论】:

【参考方案4】:

您可以调整所有设备的公共空间 - 目标 c 版本

- (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)
 

【讨论】:

以上是关于无法调整 UICollectionView 中的单元格间距的主要内容,如果未能解决你的问题,请参考以下文章

我在自定义 TableViewCell 中有一个 UICollectionView,但我无法自动调整 CollectionView 的大小

如何使 UICollectionView 的高度可自动调整和滚动?

UICollectionViewCell 中的 UILabel 有时无法正确调整大小

如何根据 UITableViewCell 中的内容调整水平 UICollectionView 的高度

使用自动布局中的固有大小动态调整 UICollectionView 的大小

嵌套 UICollectionView 时设置 ScrollView 高度问题