集合视图更改单元格大小
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 并且效果很好.. 谢谢!以上是关于集合视图更改单元格大小的主要内容,如果未能解决你的问题,请参考以下文章