我想在所有iphone型号的uicollectionview中显示一行中的两个单元格

时间:2017-08-28 06:01:35

标签: ios swift swift3 uicollectionview

here is some snap of it我尝试使用此代码,但它无效:

我的collecionview单元格:

大小是:166:32    最小间距:10:10

部分插图:20:20

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt
        indexPath: IndexPath) -> CGSize
    {
        if collectionView == MainCollectionView
        {
            let padding : CGFloat =  50
            let collectionViewSize = MainCollectionView.frame.size.width - padding

            return CGSize(width: collectionViewSize/2, height: collectionViewSize/2)

        }
        return CGSize(width: 0, height: 0)
    }

4 个答案:

答案 0 :(得分:0)

在视图中使用UICollectionViewDelegateFlowLayout 并调用委托方法

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let width = self.view.frame.width
    return CGSize(width: (width)/2, height: (width)/2) // width & height are the same to make a square cell
}

答案 1 :(得分:0)

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize{

    let width = (collectionView.frame.width/2)-0.5
    return CGSize(width:width , height: width)

}

答案 2 :(得分:0)

尝试实施这些UICollectionViewDelegateFlowLayout delegate methods以获得所需的结果:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
{
    return CGSize(width: (collectionView.bounds.width - 10 - 20*2)/2, height: collectionView.bounds.height)
    //In collectionView.bounds.width - 10 - 20*2 :
    //10 for cell spacing and 
    //20*2 for section insets on left and right
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat
{
    return 10
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets
{
    return UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 20)
}

更清楚地指明您的要求,以便我可以为您提供进一步的帮助。

答案 3 :(得分:0)

您的代码很完美,但您使用的委托方法可能无法调用。根据您使用的swift语法版本,尝试最新的委托方法。并确保您通过自己的方式使您的集合视图成为该委托的观察者。