我有一个collectionView,我正在尝试创建网格样式布局。我现在正在使用flowLayout和标准的UICollectionViewCell,但我似乎无法让collectionView将多个项放在同一行上,因为我相信flowLayout默认情况下应该这样做。这是我的collectionView代码:
查看控制器初始化代码:
override init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!) {
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .Horizontal
collectionView = UICollectionView(frame: CGRectZero, collectionViewLayout: layout) super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
collectionView.delegate = self
collectionView.dataSource = self
collectionView.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: "cell")
collectionView.backgroundColor = UIColor.whiteColor()
}
查看已加载:
collectionView.frame = self.view.bounds
collectionView.reloadData()
self.view.addSubview(collectionView)
代表和数据来源:
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 5
}
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
return CGSize(width: 40, height: 40)
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as UICollectionViewCell
func getRandomColor() -> UIColor{
var randomRed:CGFloat = CGFloat(drand48())
var randomGreen:CGFloat = CGFloat(drand48())
var randomBlue:CGFloat = CGFloat(drand48())
return UIColor(red: randomRed, green: randomGreen, blue: randomBlue, alpha: 1.0)
}
cell.backgroundColor = getRandomColor()
return cell
}
这就是我得到的:
在查看collectionView框架的边缘之前,单元格是否应该横向构建,然后转到新行? 知道为什么没有发生这种情况吗?
谢谢,
答案 0 :(得分:0)
您确定要调用大小的方法吗?我在代码中的任何地方都看不到layout.delegate = self。此外,您只需在初始化
中指定itemSize即可var flowLayout = UICollectionViewFlowLayout()
flowLayout.itemSize = CGSizeMake(40, 40)
另外,你真的想使用scrollDirection = Horizontal吗?如果是这样的话,那么你的收藏品视图高度应该等于物品高度,或者你需要有足够的物品来填充屏幕等等以便它滚动