需要在ios上的didselectitematindexpath上摇动collectionviewcell

时间:2016-03-18 10:03:44

标签: ios iphone cakeyframeanimation

enter image description here

CAKeyframeAnimation * anim = [ CAKeyframeAnimation animationWithKeyPath:@"transform"] ;

anim.values = @[ [ NSValue valueWithCATransform3D:CATransform3DMakeTranslation(-10.0f, 0.0f, 0.0f) ], [ NSValue valueWithCATransform3D:CATransform3DMakeTranslation(10.0f, 0.0f, 0.0f) ] ] ;
anim.autoreverses = YES;
anim.repeatCount = 2.0f;
anim.duration = 0.1f;

[cell.layer addAnimation:anim forKey:nil] ;

我编写上面的代码来动摇选择时的集合视图单元格。当我第一次看到屏幕后,收集视图单元格的框架不匹配。当我再次访问视图时它工作正常。 请帮我解释为什么在添加动画后第一次创建问题,如果我删除动画,那么第一次也没有不匹配,但我需要触摸动画。

当我再次访问此视图并执行该部分时,没有框架不匹配。在首次访问视图时首次选择时会出现问题。

2 个答案:

答案 0 :(得分:2)

我得到了这个问题的解决方案,为什么集合视图单元格的框架不匹配。它是由于ToastView引起的。我正在通过吐司显示超出的图像消息。现在我使用警报视图,它工作正常....

答案 1 :(得分:0)

您可以使用以下代码进行摇动视图。

#pragma mark
#pragma mark - ANIMATION SHAKE

- (void)shake:(UIView *)shakeView {

    CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"transform.translation.x"];
    animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
    animation.duration = 0.6;
    animation.values = @[ @(-10), @(10), @(-10), @(10), @(-5), @(5), @(-2.5), @(5), @(0) ];
    [shakeView.layer addAnimation:animation forKey:@"shake"];

}