CALayer透视重置

时间:2014-06-24 18:15:40

标签: ios xcode core-animation calayer

我遇到了以下麻烦。 在我的应用程序中,我实现了翻转时钟。我有3个CATransformLayers,可以上下滑动它们。我总是在顶部有两层,索引1在顶部,0在底部,一层向下,索引2.因此,当我向下翻转时,我快速向下旋转第0层并向上转换第2层,因此第0层已经可以可见。

我使用以下代码执行此操作:

    auto CATransform3D t3d = CATransform3DIdentity;
    t3d.m34 = 1.0/-500.0;
    layer2.sublayerTransform =  CATransform3DRotate(t3d,  -angle  , 1.0, 0.0, 0.0) ;

在索引2(底层)向上翻转图层。 在此之后,我立即使用索引0处的图层执行以下操作:

    auto CATransform3D t3d = CATransform3DIdentity;
    t3d.m34 = 0.0; // for make sure m34 is zero - excess code
    layer0.sublayerTransform = CATransform3DRotate(t3d,  M_PI  , 1.0, 0.0, 0.0) ;

在所有动画完成后 - 上下方向 - 我重新排列变换子图层以使这个动作越来越多次:

               [container.layer insertSublayer:layer0 above:(CALayer*)[container.layer.sublayers  objectAtIndex:2]] ;

容器是翻盖的持有者基本视图。问题是,当我翻转一次时 - 零层正常地落在后视图上。第二次翻转后 - 它也可以。但是在第三次翻转后 - 第一次翻转的图层(前第2层)以透视方式落在后方场景中,而不是看事实,我将转换重置为m34 = 0.0。这可能是什么原因? 一如既往,任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

好吧,问题在于转换速度 - 我将它增加到2000(它是0.5)并且后面层不再可见了!