UICollectionView单元格未出现

时间:2018-06-22 15:15:07

标签: swift uicollectionview uicollectionviewcell uicollectionviewlayout

我不理解UICollectionView发生了什么。 我事先表示歉意,因为我认为答案很简单

我只是不想以编程方式创建一个包含4个单元格的UICollectionView,但是其中2个没有出现,我不知道为什么

这是我的代码:

class NewsListViewController: UIViewController {

   public var newsImagesCollectionView: UICollectionView!

   override func viewWillLayoutSubviews() {
       if self.newsImagesCollectionView == nil {
           self.createNewsImagesCollectionView()
       }
   }

   fileprivate func createNewsImagesCollectionView() {

    let layout = UICollectionViewFlowLayout()
    layout.scrollDirection = .horizontal
    layout.minimumInteritemSpacing = 0
    layout.minimumLineSpacing = 0

    self.newsImagesCollectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)

    self.newsImagesCollectionView.dataSource = self
    self.newsImagesCollectionView.delegate = self

    self.newsImagesCollectionView.register(NewsImagesCollectionViewCell.self, forCellWithReuseIdentifier: NewsImagesCollectionViewCell.reuseIdentifier)

       self.newsImagesCollectionView.backgroundColor = .yellow

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

       self.newsImagesCollectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true
       self.newsImagesCollectionView.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
       self.newsImagesCollectionView.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true
       self.newsImagesCollectionView.rightAnchor.constraint(equalTo: self.view.rightAnchor).isActive = true
   }
}

extension NewsListViewController: UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {

   func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
       return 4
   }

   func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: NewsImagesCollectionViewCell.reuseIdentifier, for: indexPath) as! NewsImagesCollectionViewCell

       switch indexPath.row {
       case 0:
           cell.imageView.backgroundColor = .purple
       case 1:
        cell.imageView.backgroundColor = .green
       case 2:
           cell.imageView.backgroundColor = .orange
       case 3:
           cell.imageView.backgroundColor = .red
       default:
           cell.imageView.backgroundColor = .blue
       }
       cell.imageView.contentMode = .scaleAspectFit
       cell.imageView.image = #imageLiteral(resourceName: "euro")
       return cell
   }

   func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
       print(self.view.frame.width)
       return CGSize(width: self.view.frame.width / 4, height: self.view.frame.height)
   }

   func collectionView(_ collectionView: UICollectionView, layout    collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
       return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
   }
}

我明白了:

enter image description here

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您的收藏视图的尺寸是否与主视图相同?因为您可以使用主视图计算尺寸,所以最好使用集合视图的尺寸。

返回CGSize(宽度:collectionView.frame.width / 4,高度:collectionView frame.height)