gpt4 book ai didi

ios - collectionView Insets 中的动画变化

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:05:31 25 4
gpt4 key购买 nike

我有一个带有 2 个单元格的小型 collectionView。即垂直居中在屏幕上。当用户选择一个单元格时, Collection View 中会出现一个新单元格,并且 Collection View 会相应地将其插图更改为屏幕中垂直中间的 3 个单元格。然而这个变化并不顺利,它是跳动的。有什么方法可以为 collectionView 插图变化设置动画吗?

   -(NSArray*)layoutAttributesForElementsInRect:(CGRect)rect {
NSArray* array = [super layoutAttributesForElementsInRect:rect];

UICollectionViewLayoutAttributes* att = [array lastObject];
if (att){
CGFloat lastY = att.frame.origin.y + att.frame.size.height;
CGFloat diff = self.collectionView.frame.size.height - lastY;
if (diff > 0){
UIEdgeInsets contentInsets = UIEdgeInsetsMake(diff/2, 0.0, 0.0, 0.0);
self.collectionView.contentInset = contentInsets;
}
self.diff = diff;
}
return array;
}

最佳答案

在不创建自定义 UICollectionViewLayout 的情况下似乎无法为 collectionView 插图设置动画,因此我更改了逻辑并实现了更改单元格的位置,而不是更改 Collection View 的插图。这提供了真正流畅的动画!

-(NSArray*)layoutAttributesForElementsInRect:(CGRect)rect {
NSArray* array = [super layoutAttributesForElementsInRect:rect];

UICollectionViewLayoutAttributes* att = [array lastObject];
if (att){
CGFloat lastY = att.frame.origin.y + att.frame.size.height;
CGFloat diff = self.collectionView.frame.size.height - lastY;
if (diff > 0){
for (UICollectionViewLayoutAttributes* a in array){
a.frame = CGRectMake(a.frame.origin.x, a.frame.origin.y + diff/2, a.frame.size.width, a.frame.size.height) ;
}
}
}
return array;
}

关于ios - collectionView Insets 中的动画变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23192980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com