如何使UICollectionViewFlowLayout保持在UICollectionView中

时间:2014-10-20 07:59:44

标签: ios objective-c xcode swift uicollectionview

我使用集合视图构建了自定义日历。我的问题是,当我添加UICollectionViewFlowLayout时,它会覆盖整个屏幕并且不会留在UICollectionView内。如何让UICollectionViewFlowLayout留在UICollectionView内?这是我的代码:

    let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
    layout.sectionInset = UIEdgeInsets(top: 100, left: 10, bottom: 1, right: 10)
    let width = UIScreen.mainScreen().bounds.width
    layout.itemSize = CGSize(width: width/10, height: 35)

    collectionView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout)
    collectionView!.dataSource = self
    collectionView!.delegate = self
    collectionView!.registerClass(CollectionViewCell.self, forCellWithReuseIdentifier: "CollectionViewCell")
    collectionView!.backgroundColor = UIColor.whiteColor()

    self.view.addSubview(collectionView!)

我希望日历在哪里:

Where I want the calendar to be

这就是它覆盖整个屏幕的方式:

enter image description here

1 个答案:

答案 0 :(得分:2)

这一行:

collectionView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout)

正在创建一个新的UICollectionView实例,并将其框架设置为与self.view相同(因此它覆盖了整个屏幕)。我怀疑你真的想要使用在故事板中建立的现有的集合视图实例(并且可能正在呈现 - 但是在新的后面!)。检查故事板以查看CollectionView是否连接到视图控制器的collectionView属性:

Screenshot

如果是这样,您可以注释掉上面的行(也可能是下两行),因为在实例化视图控制器时将建立链接。

如果您没有故事板实例,那么只需修改框架以适合您想要的位置和大小,而不是使用self.view.frame