我在CATransaction中设置了一些CALayer变换和边界修改。但是,无论我使用的方法(键值,setAnimationDuration)都没有动画,更改都会完成,但不会立即进行转换。 你知道为什么吗? 谢谢!
/* CALayer*layer=[CALayer layer];
layer.bounds =AnUIImageView.bounds;
layer.contents=AnUIImageView.layer.contents;
[AnotherUIImageView.layer addSublayer:layer];
CGPoint thecentre=AnUIImageView.center;
CALayer* layerInTarget=[AnotherUIImageView.layer.sublayers lastObject];
[layerInTarget setPosition:[self.view convertPoint:thecentre toView:AnotherUIImageView]];
AnUIImageView.layer.hidden=YES;
* / //上面的代码有效,我证明它是完整的
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:2.0f]
forKey:kCATransactionAnimationDuration];
layerInTarget.position=[self.view convertPoint:AnotherUIImageView.center toView:AnotherUIImageView];
layerInTarget.transform=CATransform3DMakeScale(0.6,0.6,0.6);
[CATransaction commit];
答案 0 :(得分:7)
CALayer
相关联的 UIView
(通过view.layer
访问它们)不参与隐式动画,无论您如何配置{{1} CATransaction
}}。您需要使用显式动画(使用CAAnimation
的相应子类),或者您需要使用UIView动画。