调整单个 UICollectionViewCell 的大小,这可能吗?
Resize a single UICollectionViewCell, Is it possible?
我想知道是否可以调整单个 UICollectionViewCell 的大小?
我一直在查看 layoutAttributesForItemAtIndexPath 和 layoutAttributesForElementsInRect 之类的东西,但它们都需要您手动设置每个项目的框架,这变得更加麻烦,因为一旦我调整单元格大小时我必须再次计算框架。我的计划是能够select 单个单元格并使其扩展以适合屏幕宽度,并将所有其他单元格向下推,同时其他单元格保持其列和行。
有人做到了吗?
谢谢
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 的大小? 我一直在查看 layoutAttributesForItemAtIndexPath 和 layoutAttributesForElementsInRect 之类的东西,但它们都需要您手动设置每个项目的框架,这变得更加麻烦,因为一旦我调整单元格大小时我必须再次计算框架。我的计划是能够select 单个单元格并使其扩展以适合屏幕宽度,并将所有其他单元格向下推,同时其他单元格保持其列和行。
有人做到了吗?
谢谢
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
}
是的,就这么简单。
(尽管这并不能回答问题是否是个好主意。您将在实施时看到它;)