显示具有 2 列大小相等的方形单元格的 UICollectionView

Posted

技术标签:

【中文标题】显示具有 2 列大小相等的方形单元格的 UICollectionView【英文标题】:Display UICollectionView with 2 columns of equal size square cells 【发布时间】:2018-08-13 08:32:24 【问题描述】:

我正在尝试完成以下工作:

我已经关注this question 中的答案,但我得到了下面的图片:

这是集合视图控制器的代码:

class MainMenuViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout 



    @IBOutlet var collectionView: UICollectionView!
    @IBOutlet weak var dateTimeLabel: MarqueeLabel!
    @IBOutlet weak var iconButton: UIButton!
    @IBOutlet var imageView: UIImageView!

    var iconButtonTimer: Timer!
    var upDateTimer: Timer!

    var statusString: String!
    var alertTitle: String!
    var networkStatusString: String!




    override func viewDidLoad() 
        super.viewDidLoad()

        collectionView.dataSource = self
        collectionView.delegate = self

        collectionView.register(UINib.init(nibName: "MainMenuCell", bundle: nil), forCellWithReuseIdentifier: "MainMenuCell")

        collectionView.collectionViewLayout = MainMenuLayout()
    


    func numberOfSections(in collectionView: UICollectionView) -> Int 
        return 8
    

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 
        return 2
    

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 
        print(#function)
        let padding: CGFloat =  50
        let collectionViewSize = collectionView.frame.size.width - padding

        return CGSize(width: collectionViewSize/2, height: collectionViewSize/2)
    




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

        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MainMenuCell", for: indexPath)

         cell.backgroundColor = UIColor.red

        return cell
    

这就是故事板...

【问题讨论】:

问题到底出在哪里? 【参考方案1】:

符合UICollectionViewDelegateFlowLayout并实施

func collectionView(_ collectionView: UICollectionView,
                    layout collectionViewLayout: UICollectionViewLayout,
                    insetForSectionAt section: Int) -> UIEdgeInsets 

    return UIEdgeInsetsMake(10, 10, 10, 10)

也评论这一行

collectionView.collectionViewLayout = MainMenuLayout()

因为不需要自定义布局来完成你想要的

【讨论】:

谢谢。快到了,但我只有 1 列,我需要 2 谢谢,我在你的回答中错过了。

以上是关于显示具有 2 列大小相等的方形单元格的 UICollectionView的主要内容,如果未能解决你的问题,请参考以下文章

在EXCEL中,两个单元格的值不相等时,单元格的颜色变为红色,要如何设置.

设置 tableviewcell 高度以显示具有动态高度单元格的完整内部/嵌套 uitableview

SwiftUI:如何创建具有相同行数和列数的 LazyGrid?

以编程方式声明的 UICollectionView 不会更改 Swift 5 中单元格的大小

具有动态大小的单元格的复杂自动布局

具有自我调整大小的单元格的集合视图不再可水平滚动