尝试在用户按下UICollectionViewCell时调整其大小。此刻,细胞大小调整,但其他细胞不会对其作出反应。以下是该问题的图片:
这是我正在使用的代码。我觉得问题在于无效,但我不确定:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell * cellToChangeSize = [self.collectionView cellForItemAtIndexPath:indexPath]; // Avoid retain cycles
void (^animateChangeWidth)() = ^()
{
CGRect frame = cellToChangeSize.frame;
frame.size = CGSizeMake(300, 100);
cellToChangeSize.frame = frame;
};
// Animate
[UIView transitionWithView:cellToChangeSize duration:0.1f options: UIViewAnimationOptionCurveLinear animations:animateChangeWidth completion:^(BOOL finished) {
[self.collectionView.collectionViewLayout invalidateLayout];
}];
}
答案 0 :(得分:0)
您可以通过扩展 UICollectionViewDelegateFlowLayout 并实现 collectionView:layout:sizeForItemAtIndexPath:方法来实现:https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UICollectionViewDelegateFlowLayout_protocol/index.html#//apple_ref/occ/intfm/UICollectionViewDelegateFlowLayout/collectionView:layout:sizeForItemAtIndexPath :.
我没有直接在 collectionView:didSelectItemAtIndexPath:中修改单元格,而是在模型类中设置大小,您需要在流程布局中使用它子类。
希望这有帮助。