我正在尝试在自定义键盘扩展中实现UICollectionView,但无法正常工作。
这就是我在viewDidLoad方法中所做的事情。

    let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
    layout.sectionInset = UIEdgeInsets(top: 20, left: 10, bottom: 10, right: 10)
    layout.itemSize = CGSize(width: 90, height: 120)

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

    self.view.addSubview(collectionView)

我向类中添加了UICollectionViewDelegateFlowLayoutUICollectionViewDataSource协议,然后实现了dataSource方法,如下所示
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 14
    }

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath)
        cell.backgroundColor = UIColor.orangeColor()
        return cell
    }

相同的代码按预期在App Bundle中正常工作。我不明白为什么它在键盘扩展中有不同的行为。

我在这里缺少什么,我该怎么做才能使其在键盘扩展中正常工作?

最佳答案

当您为collectionView提供约束时,集合视图将可见。

代码:

    collectionView.translatesAutoresizingMaskIntoConstraints = false
    self.view.addSubview(collectionView)

    collectionView.topAnchor.constraintEqualToAnchor(topLayoutGuide.bottomAnchor,constant: 0.0).active = true
    collectionView.bottomAnchor.constraintEqualToAnchor(bottomLayoutGuide.topAnchor, constant: 0.0).active = true
    collectionView.leadingAnchor.constraintEqualToAnchor(view.leadingAnchor).active = true
    collectionView.trailingAnchor.constraintEqualToAnchor(view.trailingAnchor).active = true

07-27 14:04