【发布时间】:2011-02-08 05:26:15
【问题描述】:
这是我的动画代码:
CGFloat zDistance = 850;
CGFloat scaleFactor = BACK_COVER_WIDTH / self.transformLayer.bounds.size.width;
CATransform3D rotation = CATransform3DMakeRotation(M_PI, 0.0, 1.0, 0.0);
CATransform3D scale = CATransform3DMakeScale(scaleFactor, scaleFactor, 0.0);
CATransform3D transform = CATransform3DConcat(rotation, scale);
transform.m34 = 1.0 / -zDistance;
CGPoint location = CGPointMake(CGRectGetMidX(self.layer.frame), CGRectGetMidY(self.layer.frame));
[CATransaction begin];
[CATransaction setAnimationDuration:1.0];
self.transformLayer.transform = transform;
self.transformLayer.position = location;
[CATransaction commit];
self.transformLayer 是一个CATransformLayer,有两个子层,一个用于前面,一个用于后面(我正在创建“翻转”效果)。然而,这段代码只是设置了位置和变换,没有动画。所以我想也许transform 不支持隐式动画,所以我把它拿出来并尝试设置位置,但也没有动画(我确定position 支持隐式动画)。
是我做错了什么还是CATransformLayer 不支持隐式动画?文档没有说明它不支持它,所以我假设它支持它。
编辑:这是针对 Mac OS X,而不是 iOS
【问题讨论】:
-
你试过使用显式动画吗?
标签: objective-c cocoa core-animation calayer catransformlayer