调整单个 UICollectionViewCell 的大小,有可能吗?
Posted
技术标签:
【中文标题】调整单个 UICollectionViewCell 的大小,有可能吗?【英文标题】:Resize a single UICollectionViewCell, Is it possible? 【发布时间】:2015-01-26 02:48:08 【问题描述】:我想知道是否可以调整单个 UICollectionViewCell 的大小? 我一直在研究 layoutAttributesForItemAtIndexPath 和 layoutAttributesForElementsInRect 之类的东西,但它们都需要您手动设置每个项目的框架,这变得更加麻烦,因为一旦我调整单元格大小,我就必须再次计算框架。我的计划是能够选择一个单元格并将其展开以适应屏幕的宽度,然后将所有其他单元格向下推,同时其他单元格保持其列和行。
有人做到了吗?
谢谢
【问题讨论】:
这是你的布局还是内置的流布局? 我开始子分类,UICollectionFlowLayout 好吧,你不需要。流布局有一个委托。您可以将物品制作成任何您想要的尺寸。只需执行sizeForItemAtIndexPath:
。
【参考方案1】:
var selectedIndexPath: NSIndexPath?
// MARK: - UICollectionViewDelegate
override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)
selectedIndexPath = indexPath
collectionView.performBatchUpdates(nil, completion: nil)
// MARK: - UICollectionViewDelegateFlowLayout
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
var size = CGSize(width: 100, height: 100)
if selectedIndexPath == indexPath
size.width = CGRectGetWidth(collectionView.frame)
return size
是的,就是这么简单。
(虽然这并不能回答这个问题,如果这是一个好主意。你会在实施它时看到;)
【讨论】:
这很好,但有没有办法让不再选择的单元格也为它们的调整大小设置动画?它们只是立即崩溃,与膨胀的相比,这是不和谐的。以上是关于调整单个 UICollectionViewCell 的大小,有可能吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何控制 UICollectionViewCell 调整动画大小?
UICollectionViewCell 在代码中调整布局后更新约束
使用自动布局调整大小的 UICollectionViewCell