首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CATransformLayer不支持隐式动画?

CATransformLayer不支持隐式动画?
EN

Stack Overflow用户
提问于 2011-02-08 05:26:15
回答 4查看 1.2K关注 0票数 4

这是我的动画代码:

代码语言:javascript
复制
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的,而不是iOS

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-18 20:45:29

我最后只是使用了明确的动画,但大卫邓肯的答案这里似乎是一个正确的方向上的任何其他人谁遇到这个问题。

票数 1
EN

Stack Overflow用户

发布于 2011-02-08 05:30:59

隐式动画对于与UIView相关的所有层都是禁用的。如果您对细节感兴趣,我还有一个更多的详细反应关于另一个问题。但简而言之,如果您希望在与视图关联的层上进行动画,则需要显式地执行它们(即使用-addAnimation:forKey:附加-addAnimation:forKey:对象)。

编辑:原来这个问题是针对OS的,而CATransformLayer实际上是一个子层。请忽略这个答案(虽然链接的答案对iOS仍然有用)。

票数 0
EN

Stack Overflow用户

发布于 2011-02-12 19:08:41

只呈现CATransformLayer的子层。因此,我猜想它的transform属性从未被应用过。您是否尝试过设置sublayerTransform属性?看来这就是你想要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4929894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档