我正在尝试实现一个 uiview 绘制的图形。有 3 个 UIView 可以为左/右幻灯片设置动画。问题是,我无法取消 UIView 动画。所以我用CALayer替换了UIViews。现在,问题是 CALayer 是否适用于此?像这样在CALayer上画画正常吗?当我操纵框架属性时,为什么 CALayer 这么慢。
CGRect frame = curve.frame;
frame.origin.x -= diffX;
[curve setFrame:frame];
有替代方案吗?
PS我是德国人。对错误感到抱歉。
我使用 CATransaction 获得了动画,但现在我将使用 CABasicAnimation 为斧头移动设置动画。没问题期望层的位置回到之前的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 属性,但没有效果。
希望得到帮助。
马库斯