集合视图更改单元格大小

Posted

技术标签:

【中文标题】集合视图更改单元格大小【英文标题】:Collection view change cell size 【发布时间】:2016-04-10 21:15:43 【问题描述】:

当单元格被选中时,我正在尝试更改UICollectionView 中单元格的高度。

我设法改变了高度,但是,当我选择一个单元格时,其他单元格的 y 位置不会改变,导致所选单元格与其他单元格重叠。

a 单元格高度被修改后,如何告诉其他单元格改变 y 位置?

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) 

        if let detailsCell = collectionView.cellForItemAtIndexPath(indexPath) as? UserDetailsCell 

            UIView.animateWithDuration(0.5, delay: 0, options: .TransitionCurlUp, animations:  

                detailsCell.frame.size.height = 300

                , completion: nil)

        


        print(indexPath.row)
    

【问题讨论】:

【参考方案1】:

这里的问题是您正在单独处理单个单元格/项目,您应该只使用自动布局来完成所有工作。

在委托上定义单元格/项目的大小:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
    if let selectedRows = tableView.indexPathsForSelectedRows 
        if selectedRows.contains(indexPath) 
            return 300
        
    
    return 40

在选择中,您只需强制更新布局。

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
    tableView.beginUpdates()
    tableView.endUpdates()

【讨论】:

谢谢!!但是在收集视图委托中,我数找到heightForRowAtIndexPath 如果你不能只使用 UItableView,你将不得不创建一个 UICollectionViewFlowLayout 工作量更大,我建议尽可能迁移到 UITableView。 检查这个委托:collectionView:layout:sizeForItemAtIndexPath:developer.apple.com/library/ios/documentation/UIKit/Reference/… 我已经迁移到 UITableView 并且效果很好.. 谢谢!

以上是关于集合视图更改单元格大小的主要内容,如果未能解决你的问题,请参考以下文章

当边界 UICollectionView 更改时调整单元格大小

更改集合视图单元格中文本 NSString 的大小

嵌套集合视图单元格未在方向更改时调整大小

iOS中的自定大小集合视图单元格

重新调整尺寸时更改设计集合视图单元格

动画 UICollectionView 单元格大小更改和重新定位周围的单元格