我有一个UIView。我将动画应用到CALayer。将CALayer更改应用到UIView
[view.layer addAnimation:groupAnimation forKey:name];
我希望图层的最终状态成为动画后UIView的状态。比方说,我旋转了45度,并移动到一个新的位置使用图层;动画之后我的观点能否处于这种状态?因为现在,在动画之后,它会回到UIView的原始状态。我希望能得到一些帮助。谢谢。
我有一个UIView。我将动画应用到CALayer。将CALayer更改应用到UIView
[view.layer addAnimation:groupAnimation forKey:name];
我希望图层的最终状态成为动画后UIView的状态。比方说,我旋转了45度,并移动到一个新的位置使用图层;动画之后我的观点能否处于这种状态?因为现在,在动画之后,它会回到UIView的原始状态。我希望能得到一些帮助。谢谢。
要理解的是,层动画只是动画;它只是一种覆盖屏幕的临时“电影”。当动画结束时,“电影”被删除,从而揭示真实情况。这是由你来配合电影的最后一帧的情况。
UIView动画在很大程度上为您做到了这一点。但层动画完全取决于你。
因此,假设您为位置变化设置动画;做一些事情,这样图层或视图实际上就是你动画完全取决于你的位置。
通常情况下,您将自己作为一组独立的命令执行。但要小心,不要做任何可能触发隐式层动画的事情,因为这会与您正在尝试明确执行的动画冲突。
这里的示例代码(不涉及你的,但它确实表明了一般形式):
CAAnimationGroup* group = // ...
// ... configure the animation ...
[view.layer addAnimation:group forKey:nil];
// now we are ready to set up the view to look like the final "frame" of the animation
[CATransaction setDisableActions:YES]; // do not trigger implicit animation by mistake
view.layer.position = finalPosition; // assume we have worked this out
当动画化的CALayer或使用CAAnimationGroup,以下属性必须设置,如:
groupAnimation.removedOnCompletion = NO;
groupAnimation.fillMode = kCAFillModeForwards;
参见:After Animation, View position resets
另外请注意,它可能有助于申请动画直接访问视图本身,而不是访问视图的图层。这是使用动画块完成的,我发现它非常有用。
座风格动画可以在许多方面进行自定义,但这里有一个简单的例子,它可以在一个函数中,当你需要,以动画调用:
- (void) animateMyView
{
CGRect newViewFrame = CGRectMake(x,y,w,h);
[UIView animateWithDuration:0.5
delay:0
options: (UIViewAnimationOptionCurveLinear)
animations:^{
self.myView = CGAffineTransformMakeRotation (45);
[self.myView setBounds:newViewFrame];
}
completion:NULL];
}
欲了解更多信息,请参阅Apple's documentation on View Animation。
我的自动布局被禁止,但仍动画后,它会恢复到原来的状态。实际上,我尝试了UIViewAnimation,但是我无法实现我想要的。 CALayer动画更加灵活。有没有一种方法可以确保我的UIView将处于与其动画层相同的状态? – cessmestreet
回答更新,以包括以下信息: 当一个动画或CALayer的使用CAAnimationGroup,以下属性必须设置: groupAnimation.removedOnCompletion = NO; groupAnimation.fillMode = kCAFillModeForwards; 另请参阅:http://stackoverflow.com/questions/226555/after-animation-view-position-resets – JRJ
以这种方式滥用'removedOnCompletion'绝对是错误的事情,不应该给建议 – matt
并从这里开始看到我关于此主题的完整教程:http://www.apeth.com/iOSBook/ch17.html#_using_a_cabasicanimation – matt
感谢您的这一点。你太棒了! – cessmestreet