Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios swift中的集合视图单元格高度和宽度_Ios_Swift_Swift3_Uicollectionview - Fatal编程技术网

Ios swift中的集合视图单元格高度和宽度

Ios swift中的集合视图单元格高度和宽度,ios,swift,swift3,uicollectionview,Ios,Swift,Swift3,Uicollectionview,集合视图有多个图像工作正常。就像这样 但我想要这样的表演 这是集合视图单元格的代码 let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout() layout.sectionInset = UIEdgeInsets(top: 10, left: 0, bottom: 20, right: 0) let width = UIScreen.main.bounds.width layout.itemSize =

集合视图有多个图像工作正常。就像这样

但我想要这样的表演

这是集合视图单元格的代码

 let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
 layout.sectionInset = UIEdgeInsets(top: 10, left: 0, bottom: 20, right: 0)
 let width = UIScreen.main.bounds.width
 layout.itemSize = CGSize(width: width/2 , height: width/2 )
 layout.minimumInteritemSpacing = 0
 layout.minimumLineSpacing = 0
 collectionView!.collectionViewLayout = layout

在viewcontroller上添加此方法

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {
        return CGSize(width: ((self.view.frame.size.width/2) - 10), height: 255)
    }

在viewcontroller上添加此方法

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {
        return CGSize(width: ((self.view.frame.size.width/2) - 10), height: 255)
    }
试试看

试试看


只需实现一些
UICollectionViewDelegateFlowLayout
方法,即可获得
UICollectionViewCells
的正确大小和间距

示例:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
{
    let cellSize = CGSize(width: (collectionView.bounds.width - (3 * 10))/2, height: 120)
    return cellSize
}

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

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets
{
    let sectionInset = UIEdgeInsetsMake(10, 10, 10, 10)
    return sectionInset
}

只需根据您的要求更改大小和间距值。

只需执行一些
UICollectionViewDelegateFlowLayout
方法即可获得
UICollectionViewCells
的正确大小和间距

示例:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
{
    let cellSize = CGSize(width: (collectionView.bounds.width - (3 * 10))/2, height: 120)
    return cellSize
}

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

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets
{
    let sectionInset = UIEdgeInsetsMake(10, 10, 10, 10)
    return sectionInset
}

只需根据您的要求更改大小和间距值。

您可以尝试为集合视图的单元格和行设置最小间距,并实现下面的委托

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: (collectionView.frame.width/2) - 5, height: collectionView.frame.width/2)
    }

您可以尝试为集合视图设置单元格和行的最小间距,并实现下面的委托

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: (collectionView.frame.width/2) - 5, height: collectionView.frame.width/2)
    }