根据单元格的不更改单元格高度动态更改 UICollectionView 高度

Posted

技术标签:

【中文标题】根据单元格的不更改单元格高度动态更改 UICollectionView 高度【英文标题】:Change UICollectionView Height Dynamically according to cell's not change cell height 【发布时间】:2017-10-10 04:47:29 【问题描述】:

我正在开发 ios App.Click to Tableview cell than value show on collectionViewCell 但我想根据单元格的值更改 collectionView 的高度。

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath 
    return CGSizeMake(_collectionView.frame.size.width , _collectionView.frame.size.height+30);


【问题讨论】:

您想更改集合视图高度或单元格高度?? 你想根据单元格数改变collectionView的高度吗? 是根据单元格数改变collectionview高度 【参考方案1】:

你可以使用它的 scrollView 的 contentSize 来改变它 加载collectionview后..如果您更新任何单元格插入项目或删除项目,您需要再次更新高度 即

myCollectionView.reload()

现在更新框架或高度

//if you are using auto-resizing you can update frame
let frame = myCollectionView.frame
frame.height = myCollectionView.contentSize.height
myCollectionView.frame = frame

如果你使用 autolayout make 和 iboutlet 作为你的 collectionview 的高度约束

@IBOutlet collectionViewHeightConstraint:NSLayoutContraint!

现在更新这个约束

collectionViewHeightConstraint.constant = myCollectionView.contentSize.height

【讨论】:

【参考方案2】:

您需要添加此代码

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize

    var numberOfCellInRow : Int = yourArray.count
    var padding : Int = 5
    var collectionCellWidth : CGFloat = (self.view.frame.size.width/CGFloat(numberOfCellInRow)) - CGFloat(padding)
    return CGSize(width: collectionCellWidth , height: collectionCellWidth)

【讨论】:

以上是关于根据单元格的不更改单元格高度动态更改 UICollectionView 高度的主要内容,如果未能解决你的问题,请参考以下文章

如何动态更改自定义单元格的表格视图单元格的高度?

如何在 Swift 中动态更改包含 UICollectionView 单元格的 UITableView 单元格的高度?

如何通过更改单元格的高度来创建动态 TableView 页脚

如何根据标签文本快速更改表格视图单元格高度?

如何通过单击根据其内容更改表格单元格的高度(折叠和展开)?

UITableView:单击按钮时如何动态更改单元格高度?