我遇到了以下麻烦。 在我的应用程序中,我实现了翻转时钟。我有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。这可能是什么原因? 一如既往,任何帮助将不胜感激。
答案 0 :(得分:0)