如何将UICollectionViewCell作为设备的整个宽度?

时间:2015-09-06 16:37:38

标签: ios swift uicollectionview

我的UIView内有UICollectionViewCell我需要复制。我需要将此视图固定在屏幕的左侧和右侧。但是,我找不到任何方法来控制UICollectionViewCell的宽度。

我只是错过了什么?

2 个答案:

答案 0 :(得分:2)

你是对的。 UICollectionViewCell不会使用与其他视图相同的AutoLayout规则。每个单元格由UICollectionView上设置的布局类控制。

从技术上讲,您可以在Interface Builder中拖动手柄并以此方式调整大小,但对于不同的屏幕宽度和方向,它不会是动态的。

我可以想到两个选择:

  1. 覆盖视图控制器中的sizeForItemAtIndexPath:并以编程方式设置为父容器的宽度。有关完成此操作的信息,请参阅question here上的更新1,或查看Apple documentation here了解更多背景信息
  2. 如果所有单元格始终为全宽
  3. ,请考虑使用UITableView

答案 1 :(得分:0)

您可以使用collectionView布局。此代码可以帮助您:

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

    var size = CGSize.zero

    if let layout = collectionViewLayout as? UICollectionViewFlowLayout {
        size = layout.itemSize;
        size.width = collectionView.bounds.width
    }

    return size
}

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    collectionView.collectionViewLayout.invalidateLayout()
}