Ios 设置UICollectionView辅助视图的动画调整大小
我正在使用CSStickyHeaderFlowLayout从 作为我的应用程序的一部分,我在标题视图/单元格中有一个按钮,用于发送到需要增长的集合视图。反过来,集合视图更改CSStickyHeaderFlowLayout中的标题首选大小,并向CSStickyHeaderFlowLayout发送invalidateLayout。尝试通过动画块设置动画效果不佳,因为它会将标题从按钮移动到顶部。这真的很奇怪。flowLayout是否有办法在补充视图中正确设置更改动画 这是我更改大小的代码Ios 设置UICollectionView辅助视图的动画调整大小,ios,objective-c,animation,uicollectionview,supplementary,Ios,Objective C,Animation,Uicollectionview,Supplementary,我正在使用CSStickyHeaderFlowLayout从 作为我的应用程序的一部分,我在标题视图/单元格中有一个按钮,用于发送到需要增长的集合视图。反过来,集合视图更改CSStickyHeaderFlowLayout中的标题首选大小,并向CSStickyHeaderFlowLayout发送invalidateLayout。尝试通过动画块设置动画效果不佳,因为它会将标题从按钮移动到顶部。这真的很奇怪。flowLayout是否有办法在补充视图中正确设置更改动画 这是我更改大小的代码 - (voi
- (void)treckDetailMapCellSizeToggle:(BOOL)toggle {
//Modifier l'attribu de la map et invalider le layout pour le redessiner.
CSStickyHeaderFlowLayout *layout = (id)self.collectionViewLayout;
if ([layout isKindOfClass:[CSStickyHeaderFlowLayout class]]) {
[UIView animateWithDuration:0.5 animations: ^{
if (isMapCellExpended) {
isMapCellExpended = NO;
layout.parallaxHeaderReferenceSize = CGSizeMake(self.view.frame.size.width, HEADER_VIEW_PREFERED_SIZE);
}
else {
isMapCellExpended = YES;
layout.parallaxHeaderReferenceSize = CGSizeMake(self.view.frame.size.width, HEADER_VIEW_MAX_SIZE);
}
[layout invalidateLayout];
}];
}
}
这是一段视频,我点击了一个叫“点菜”的按钮
编辑:
thaks开始阅读这一页(我以前从未见过)。我发现这会使它变得更好,但不能解决问题
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
CSStickyHeaderFlowLayout *layout = (id)self.collectionViewLayout;
if ([layout isKindOfClass:[CSStickyHeaderFlowLayout class]]) {
[self.collectionView performBatchUpdates: ^{
preferedSize = preferedSize == 200 ? 300 : 200;
layout.parallaxHeaderReferenceSize = CGSizeMake(self.view.frame.size.width, preferedSize);
} completion: ^(BOOL finished) {
}];
}
}
您应该调用
[collectionView.collectionViewLayout invalidateLayout];
要设置大小更改的动画,请在视图动画闭包中使布局无效。大小本身应通过适当的布局委托方法设置,例如collectionView(collectionView:collectionViewLayout:ReferenceSizeForHeaderInstruction:)
这是行不通的。正如我最终发现的,只有CollectionCells才能拥有这种类型的动画。补充视图需要以其他方式(手动)设置动画,并与视图其余部分的动画同步。所以没有好的方法来解决这个问题。遗憾的是,这是CollectionView的一个缺陷。
UIView.animate(withDuration: 0.33) {
self.collectionView.collectionViewLayout.invalidateLayout()
}