Swift iOS - 如何使 CollectionView 的单元格大小

Posted

技术标签:

【中文标题】Swift iOS - 如何使 CollectionView 的单元格大小【英文标题】:Swift iOS -How to make CollectionView the size of its cells 【发布时间】:2018-06-14 13:55:36 【问题描述】:

我有一个可以包含 2 到 5 个单元格的 collectionView。我想将集合视图固定到其父 vc 的底部,但我希望集合视图只有其单元格的大小(类似于操作表)。

如果我不使用锚点,我会这样做,只设置它的框架:

// this works fine but I just can't achieve this using anchors
cv.frame = CGRect(x: 0, y: view.frame.height - heightOfAllCells, width: view.frame.width, height: heightOfAllCells)

如何使用锚点让 collectionView 的大小仅为其单元格的大小,但仍固定在其父视图的底部?

let cv: UICollectionView!
let myData = [String]()
let cellHeight: CGFloat = 50

override func viewDidLoad() 
    super.viewDidLoad()

    var heightOfAllCells = CGFloat(self.myData.count) * cellHeight

    //... instantiated cv layout and translateAutoResizingMask = false
    cv.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
    cv.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true

    cv.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0).isActive = true

    cv.topAnchor.constraint(equalTo: cv.bottomAnchor, constant: -heightOfAllCells).isActive = true

    cv.heightAnchor.constraint(equalToConstant: heightOfAllCells).isActive = true


func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 
    return myData.count


func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 
    return CGSize(width: collectionView.frame.width, height: cellHeight)

【问题讨论】:

你现在没有工作吗?顺便说一句,我会删除顶部锚约束,AutoLayout 只需要尾随、前导、底部和高度来准确计算视图大小和位置 谢谢!你是对的。 @Sh_Khan 说了同样的话,而且奏效了。感谢帮助:) @Scriptable 为什么自动布局不能对尾随、前导、顶部和高度做同样的事情?为什么是底部 + 高度而不是顶部 + 高度? 应该可以,但除非它们是精确的,否则它们是相互冲突的约束。此计算可能是错误的并导致问题。 cv.topAnchor.constraint(equalTo: cv.bottomAnchor, constant: -heightOfAllCells) 好的,谢谢。我看到了问题 【参考方案1】:

你需要去掉这个约束

  cv.topAnchor.constraint(equalTo: cv.bottomAnchor, constant: -heightOfAllCells).isActive = true

【讨论】:

它说我需要 5 分钟来接受你的回答。谢谢!

以上是关于Swift iOS - 如何使 CollectionView 的单元格大小的主要内容,如果未能解决你的问题,请参考以下文章

如何使工具栏附加到底部 iOS Swift

如何使 PHFComposeBarView 控件在 Swift iOS 应用程序中变为活动状态?

Swift iOS - 如何使 CollectionView 的单元格大小

iOS Swift SpriteKit:如何使子精灵节点的位置和动作与其父精灵节点相同?

使用 swift 2 以编程方式使 iOS 设备静音/振动?

如何使用户定义的运行时属性在 xcode 10.2.1 和 ios 12.2 中起作用