我已经使用集合视图构建了一个自定义日历。我的问题是,当我添加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!)我希望日历在那里:

以下是它覆盖整个屏幕的方式:

发布于 2014-10-20 08:24:22
这一行:
collectionView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout)正在创建UICollectionView的一个新实例,并将其框架设置为与self.view相同(因此它覆盖了整个屏幕)。我怀疑您实际上希望使用在故事板中建立的现有集合视图实例(并且可能正在呈现--但在新的集合视图后面!)在情节提要中检查CollectionView是否连接到视图控制器的collectionView属性:

如果是这样的话,您只需注释掉上面的行(可能还有接下来的两行),因为链接将在视图控制器实例化时建立。
如果您没有故事板实例,那么只需修改框架以适应您想要的位置和大小,而不是使用self.view.frame。
https://stackoverflow.com/questions/26460905
复制相似问题