Ios 只需使用情节提要、约束设置UICollectionView中单元格的大小

Ios 只需使用情节提要、约束设置UICollectionView中单元格的大小,ios,cocoa-touch,uicollectionview,uistoryboard,nslayoutconstraint,Ios,Cocoa Touch,Uicollectionview,Uistoryboard,Nslayoutconstraint,这是UICollectionView,单元格为紫色: 很简单,我希望单元格是集合视图宽度的1/2。(因此,TBC在集合视图中将是两行单元格排列。) (收集视图只是全屏显示,因此每个单元格只有屏幕宽度的一半。) 如何在故事板中实现这一点 如果我试图以正常的方式控制阻力,它基本上不起作用 这些是简单的完全静态的单元(不是动态的) 对于在这里搜索的任何人来说,为了节省您的时间:以下是(2016年)制作双跨UICollectionView布局的最简单方法;细胞之间没有空隙 // Two - two-

这是UICollectionView,单元格为紫色:

很简单,我希望单元格是集合视图宽度的1/2。(因此,TBC在集合视图中将是两行单元格排列。)

(收集视图只是全屏显示,因此每个单元格只有屏幕宽度的一半。)

如何在故事板中实现这一点

如果我试图以正常的方式控制阻力,它基本上不起作用

这些是简单的完全静态的单元(不是动态的)


对于在这里搜索的任何人来说,为了节省您的时间:以下是(2016年)制作双跨UICollectionView布局的最简单方法;细胞之间没有空隙

// Two - two-across UICollectionView
// use a completely standard UIViewController on the storyboard,
// likely change scroll direction to vertical.
// name the cell identifier "cellTwo" on the storyboard
import UIKit
class Two:UICollectionViewController
    {
    override func viewDidLoad()
        {
        super.viewDidLoad()

        let w = collectionView!.bounds.width / 2.0

        let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
        layout.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
        layout.itemSize = CGSize(width:w,height:w)
        layout.minimumInteritemSpacing = 0
        layout.minimumLineSpacing = 0

        collectionView!.collectionViewLayout = layout

        // Note!! DO NOT!!! register if using a storyboard cell!!
        // do NOT do this:
        // self.collectionView!.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)
        }

    override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int
        { return 1 }
    override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
        {  return 5 }
    override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
        {
        return collectionView.dequeueReusableCellWithReuseIdentifier("cellTwo", forIndexPath: indexPath)
        }
    }

你不能在情节提要中这样做。集合视图的宽度在运行时之前是未知的,并且集合视图单元格不在autolayout下,因此不能表达任何其他内容的“1/2宽度”概念。(如果您事先知道集合视图的宽度,您可以使用故事板中的流布局,通过在头部分割来绝对设置单元格大小;但您不知道,因为宽度因设备而异。)

请参见以下答案: