我正在尝试实现一个由UIView绘制的图形。有3个UIView用于动画左/右滑动。问题是,我无法取消UIView动画。因此,我用CALayer替换了UIView。现在的问题是,是否适用于CALayer?像这样在CALayer上绘制正常吗?为什么当我操作frame属性时,CALayer会变得如此缓慢。
CGRect frame = curve.frame;
frame.origin.x -= diffX;
[curve setFrame:frame];
有没有其他的替代方案?
附言:我是一名德国人。对于错误我很抱歉。
我使用CATransaction得到了动画效果,但现在我想用CABasicAnimation来实现x轴移动的动画效果。这并不是问题,只是图层的位置会回到之前的x轴位置。
CABasicAnimation *theAnimation;
theAnimation = [CABasicAnimation animationWithKeyPath:@"position"];
theAnimation.delegate = self;
theAnimation.duration = 1.0;
theAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
CGPoint position = [[curves objectAtIndex:i]position];
position.x = [[curves objectAtIndex:i]position].x - diffX;
[theAnimation setToValue:[NSValue valueWithCGPoint:position]];
[[curves objectAtIndex:i] addAnimation:theAnimation forKey:[NSString stringWithFormat: @"translate.x.%d", index]];
该位置更改了位置(例如xStart = 100,xEnd = 200),但当动画结束时,图层返回到开始的x位置(例如x = 100)。 这是正常的吗?如何解决这个问题,使结束位置不再改变? 我尝试更改removeOnComplete属性,但没有效果。
希望得到帮助。
马尔库斯