CollectionView单元格无法为框架设置动画

时间:2013-10-16 05:57:32

标签: iphone ios objective-c

现在已经很晚了,我现在太笨了,无法弄清楚到底是怎么回事。有没有人在这里看到任何明显的错误。

当用户按下它时,我正试图为集合视图单元格的框架设置动画。

来自视图控制器的我的代码。

-(void)collectionView:(UICollectionView *)collectionView didHighlightItemAtIndexPath:(NSIndexPath *)indexPath{

    NSLog(@"Highlighted");
    [[cells objectAtIndex:indexPath.row] shrinkCell:YES];


}

这是我在单元格内的代码

-(void)shrinkCell:(BOOL)shrink{
    NSLog(@"Shrink");


    if (shrink) {


        [UIView animateWithDuration:1.0
                              delay:0.5
                            options: UIViewAnimationOptionCurveEaseIn
                         animations:^{
                             self.bg.frame = CGRectOffset(self.bg.frame, 100, 100);
                         }
                         completion:nil];
    }
}

我正在运行的问题是动画立即完成。它没有延迟和没有持续时间。我无法弄清楚原因。任何人有任何提示或想法?

非常感谢。

4 个答案:

答案 0 :(得分:0)

尝试设置center属性的动画而不是frame。我的猜测是你的画面出于某种原因不再具有动画效果。

答案 1 :(得分:0)

试试这个,

-(void)collectionView:(UICollectionView *)collectionView didHighlightItemAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"Highlighted");
    UICollectionViewCell  *animateCell = [collectionView cellForItemAtIndexPath:indexPath];
    [self shrinkCell:YES andCell:animateCell];
}
-(void)shrinkCell:(BOOL)shrink andCell:(UICollectionViewCell*)animCell{
    NSLog(@"Shrink");


    if (shrink) {


        [UIView animateWithDuration:1.0
                              delay:0.5
                            options: UIViewAnimationOptionCurveEaseIn
                         animations:^{
                             animCell.frame = CGRectOffset(animCell.frame, 100, 100);
                         }
                         completion:nil];
    }
}

答案 2 :(得分:0)

我不知道它是否与它有关,但是,这些细胞来自哪一行呢?

[[cells objectAtIndex:indexPath.row] shrinkCell:YES];

你为什么不用?:

[collectionView cellForItemAtIndexPath:indexPath];

答案 3 :(得分:0)

您的意思是使用:

-(void)collectionView:(UICollectionView *)collectionView didHighlightItemAtIndexPath:(NSIndexPath *)indexPath

而不是:

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath