Ios UICollectionView:按按钮更新flowLayout

Ios UICollectionView:按按钮更新flowLayout,ios,objective-c,swift,Ios,Objective C,Swift,我有两种看法。父视图的内容视图是UICollectionView,例如UIButton。如何通过按下按钮更改项目的大小(例如+5px)?您可以使用集合视图单元格高度设置变量,当单击按钮增加此高度时,只需重新加载集合视图,您的单元格就会更高 var CELL_HEIGHT = 44 func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, s

我有两种看法。父视图的内容视图是
UICollectionView
,例如
UIButton
。如何通过按下按钮更改项目的大小(例如+5px)?

您可以使用集合视图单元格高度设置变量,当单击按钮增加此高度时,只需重新加载集合视图,您的单元格就会更高

var CELL_HEIGHT = 44

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    return CGSize(width: CELL_WIDTH, height:CELL_HEIGHT)
}

@IBAction func buttonClick(sender: AnyObject) {
    CELL_HEIGHT = CELL_HEIGHT + 5
    self.collectionView.reloadData()
}

您可以使用集合视图单元格高度的变量,当单击按钮增加此高度时,只需重新加载集合视图,您的单元格就会更高

var CELL_HEIGHT = 44

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    return CGSize(width: CELL_WIDTH, height:CELL_HEIGHT)
}

@IBAction func buttonClick(sender: AnyObject) {
    CELL_HEIGHT = CELL_HEIGHT + 5
    self.collectionView.reloadData()
}

重载数据()对我不起作用。但每次值更改时,我都尝试设置新的UICollectionViewFlowLayout。。。我不确定这是否是一个好的解决方案,但它是有效的。您需要调用
invalidateLayout()
,让项目重新读取高度!谢谢!这是最好的解决方案!重载数据()对我不起作用。但每次值更改时,我都尝试设置新的UICollectionViewFlowLayout。。。我不确定这是否是一个好的解决方案,但它是有效的。您需要调用
invalidateLayout()
,让项目重新读取高度!谢谢!这是最好的解决方案!