自适应UICollectionView单元格宽度

时间:2016-03-31 20:14:06

标签: ios objective-c

我是集合视图和自动布局的新手,我在使单元格大小适应模拟器中的各种设备时遇到问题。我正在使用流程布局,并在尺寸检查器中设置尺寸。我提供的图像显示了我需要在所有设备上查看单元格(左侧iPhone5上的画布)的方式。 iPhone4显示屏很好但是6s不正确。 有人可以告诉我这是怎么做的,因为我找不到我要找的确切信息。 感谢

另外,我不确定为什么iPhone5不像4& 6那样在预览部分显示单元格。任何线索..?

screen shot1

1 个答案:

答案 0 :(得分:4)

使用UICollectionView,您需要使用委托方法计算单元格的大小及其周围的空间(插图和插入间距)。

这样的事情对你有用:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {

    return UIEdgeInsets(top: 8, left: 4, bottom: 0, right: 4)
}

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat {
    return CGFloat(8)
}

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

    let cellWidth = (view.bounds.size.width - 16) / 2
    let cellHeight = cellWidth * 0.8 // multiply by some factor to make cell rectangular not square

    return CGSize(width: cellWidth, height: cellHeight)
}

UICollectionViewCell范围内,您可以使用自动布局来定位单元格中的内容,例如标签,图像等。

iPhone 5s

iPhone 6s Plus