gpt4 book ai didi

ios - 如何使 UICollectionView 自动布局

转载 作者:行者123 更新时间:2023-11-29 01:37:22 26 4
gpt4 key购买 nike

如何使 UICollectionView 自动布局,以便在某个时刻出现在屏幕上的项目数根据项目总数决定。我实际上想做这样的布局,如果我有 9 个项目,那么所有九个项目都应该同时显示在 Collection View 上。如果项目是 8 或其他,那么项目的大小应该以这样的方式增加,即它们仍然占据 Collection View 的完整区域。

我绘制的条件如下:

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
var cell = collectionView.cellForItemAtIndexPath(indexPath) as CollectionViewCell

if((cell.selected) && (indexPath.row%2 == 0))
{
cell.backgroundColor = UIColor.whiteColor()
imageview.image = UIImage( named: a[indexPath.row])
}
else if((cell.selected) && (indexPath.row%2 != 0))
{
cell.backgroundColor = UIColor.whiteColor()
imageview.image = UIImage( named: a[indexPath.row])
}
}

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
var abc : CGSize!
if(a.count == 1){
abc = CGSize(width: self.view.frame.width, height: self.view.frame.height/2)
}
else if(a.count == 2) {
abc = CGSize(width: self.view.frame.width/2, height: self.view.frame.height/2)
}
else if (a.count > 2) && (a.count<6){
abc = CGSize(width: self.view.frame.width/3, height: self.view.frame.height/2)
}
else {
abc = CGSize(width: self.view.frame.width/3, height: self.view.frame.height/5)
}
return abc
}

func collectionView(collectionView: UICollectionView, shouldHighlightItemAtIndexPath indexPath: NSIndexPath) -> Bool {
return true
}

func collectionView(collectionView: UICollectionView, shouldSelectItemAtIndexPath indexPath: NSIndexPath) -> Bool
{
return true
}

func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 1
}

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return a.count
}

func collectionView(collectionView: UICollectionView, shouldShowMenuForItemAtIndexPath indexPath: NSIndexPath) -> Bool {
return true
}

最佳答案

根据您的问题,我了解到您想调整 UICollectionView 的单元格大小,以便它们覆盖整个屏幕。

有多种方法可以实现您想要的效果,但关键是使用 UICollectionViewLayout。

例如,UICollectionViewFlowLayout 有一个 itemSize 属性。

根据您的内容(对于单元格),您可以尝试计算它们将占用多少空间,然后设置 FlowLayout 的 itemSize 属性。如果所有单元格的大小都应该相同,这就足够了。

您还可以使用委托(delegate)方法 collectionView:layout:sizeForItemAtIndexPath: 来设置每个单元格的大小。

如果这还不够,例如因为您还想更改单元格的排列,您将需要子类化 FlowLayout 以便计算每个项目的大小。看看这个: https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/CollectionViewPGforIOS/UsingtheFlowLayout/UsingtheFlowLayout.html

最终,您需要首先根据您的内容计算需要多少个单元格。

关于ios - 如何使 UICollectionView 自动布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32818396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com