我有一个集合视图,我想要的效果是当单元格被点击时,它会增长到占据整个屏幕。为了实现这一点,我基本上只需要在
问题出在单元格内部。集合视图单元格由一组受约束管理的中等复杂视图层次结构组成。我希望单元格的子视图随着动画单元格的增长和缩小而增长和缩小。不幸的是,我的子视图在单元格缓慢动画到其新大小时立即捕捉到其新位置。如何确保单元格内容与单元格大小一起动画?
以下是集合视图控制器中的两个相关方法:
didSelectItemAtIndexPath
中调用performBatchUpdates
,而sizeForItemAtIndexPath
则知道对于选定的单元格返回更大的大小。这一切都很好地运作,单元格可以按预期增长和缩小。问题出在单元格内部。集合视图单元格由一组受约束管理的中等复杂视图层次结构组成。我希望单元格的子视图随着动画单元格的增长和缩小而增长和缩小。不幸的是,我的子视图在单元格缓慢动画到其新大小时立即捕捉到其新位置。如何确保单元格内容与单元格大小一起动画?
以下是集合视图控制器中的两个相关方法:
- (CGSize) collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
if ([collectionView.indexPathsForSelectedItems containsObject:indexPath])
return CGSizeMake(collectionView.bounds.size.width - 20, collectionView.bounds.size.height - (20 + [self.topLayoutGuide length]));
else
return CGSizeMake(260, 100);
}
- (void) collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
[collectionView performBatchUpdates:nil completion:nil];
}
layoutSubviews
,立即将子视图移动到它们的展开位置。我只是猜测 - 如果您添加代码,我们将能够看到是否是这种情况。另外一点 - 单元格是否应该在集合中覆盖其他单元格,还是应该将它们推出去?如果应该在顶部展开,我建议在UICollectionView上方添加一个新视图并进行动画处理。 - Ian