Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.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 集合视图间距会打断ui_Ios_Uicollectionview_Uicollectionviewcell_Uicollectionviewlayout - Fatal编程技术网

Ios 集合视图间距会打断ui

Ios 集合视图间距会打断ui,ios,uicollectionview,uicollectionviewcell,uicollectionviewlayout,Ios,Uicollectionview,Uicollectionviewcell,Uicollectionviewlayout,我正在尝试创建一个如下所示的UI 为此,我使用了UICollectionView和FlowLayout 为了将第一个单元格显示为全宽,将剩余单元格显示为3列,我实现了SizeFormiteIndeXPath:和MinimumineItemSpacingForSectionAtIndex方法: func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLay

我正在尝试创建一个如下所示的UI

为此,我使用了
UICollectionView
FlowLayout

为了将第一个单元格显示为全宽,将剩余单元格显示为3列,我实现了
SizeFormiteIndeXPath:
MinimumineItemSpacingForSectionAtIndex
方法:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
{
    var cellSize = CGSizeZero

    if indexPath.item == 0
    {
        let width  = self.cvMedia.frame.width - 20
        let height = (width * 9)/16
        cellSize   = CGSize(width: width, height: height)
    }
    else
    {
        let width  = self.cvMedia.frame.width / 3 - 20
        let height = (width * 16)/9
        cellSize   = CGSize(width: width, height: height)
    }

    return cellSize
}



func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat
{
    return 20.0
}
但我在iphone6splus和iphone6plus中得到了以下输出:


我尝试将项目间距从20改为19,它在模拟器上工作,但在实际设备上它仍然显示相同的行为。如果我更改间距值,我在某些设备版本上获得了正确的输出,而在某些版本上无法工作。我可以添加设备版本检查,并基于此返回值。但这不是一个优雅的解决方案,它将在未来的版本中崩溃。有人能帮我解决这个问题吗?提前感谢。

检查此项,并将单元格和线的最小间距值更改为0

制作此布局时,应使用集合视图的宽度作为参数

比如说,

  • 您需要3个单元格来适应视图
  • 电池之间的间距必须为20磅
  • 解决方案:

    cellWidth = ( collectionView?.bounds.width - minimumSpacing * (numberOfCellsInARow - 1 ) ) / numberOfCellsInARow
    
    在运行时,在ViewWillAspect()或CellForRowatineXpath()上计算单元格的大小

    场景:

    cellWidth = ( collectionView?.bounds.width - minimumSpacing * (numberOfCellsInARow - 1 ) ) / numberOfCellsInARow
    
    装置的宽度为320磅。Collectionview的宽度为300pt(间距为10pt L&R)单元格之间的间距为20pt。手机需要3个!! 单元格大小:

    现在..开始用任何一种方法计算

    单元间距=(3-1)*20=2*20=40pt

    剩余集合视图宽度=300pt-40pt=260pt

    单元尺寸=260pt/3=86.667 pt。(86磅进近)

    在代码中:

    cellWidth = ( collectionView?.bounds.width - minimumSpacing * (numberOfCellsInARow - 1 ) ) / numberOfCellsInARow
    
    而且,这只给出了单元格宽度。你也需要手机的高度。 您可能已经有了单元格的纵横比。使用该值,还可以计算单元高度

    亲切的问候,

    Suman Adhikari

    你从情节提要中删除了默认的插图了吗?@Happiehappie:没有,我没有更改情节提要中的任何内容。