你好,我想做一个CABasicAnimation旋转,我的视图旋转440度。在动画之后,我不想将视图重置为旧的位置。它应该在相同的位置,就像在动画的最后一帧。
CABasicAnimation *旋转= CABasicAnimation动画带:@“transform.rotation”;
rotate.toValue = [NSNumber numberWithFloat:degrees / 180.0 * M_PI];
rotate.duration = 4.4;
[rotate setFillMode:kCAFillModeForwards];
UIView *animationView = [self getBGContainerViewForSender:sender];
[animationView.layer addAnimation:rotate forKey:@"myRotationAnimation"];</i>有人能告诉我如何在最后一个画面上定位视图吗?
发布于 2015-08-05 06:32:35
当您创建动画并将其添加到一个层时,您不会更改对象中的任何值。因此,在您的情况下,animationView的transform属性不会改变。因此,当动画结束时,视图将恢复到原来的位置。要解决这个问题,你必须做两件事:
forKey:值必须是动画的名称,在本例中为"transform“。此名称将用显式动画替换用于转换的隐式动画。因此,请添加:
animationView.layer.transform =CA3DTransformMakeRotate(…);
并将添加动画调用更改为
animationView.layer加法动画:旋转forKey:@"transform";
这是解释在WWDC 2010,核心动画在实践第1部分,约39:20。
发布于 2015-08-05 05:40:51
在激发动画之前,进行如下事务:
[CATransaction begin];
[CATransaction setValue:kCFBooleanTrue forKey:kCATransactionDisableActions];
CATransform3D current = animationView.layer.transform;
animationView.layer.transform = CATransform3DRotate(current, numberWithFloat:degrees / 180.0 * M_PI, 0, 1.0, 0);
[CATransaction commit];
/* YOUR ORIGINAL CODE COMES HERE*/https://stackoverflow.com/questions/31818728
复制相似问题