CATransform3DMakeRotation带来了视图

时间:2010-05-25 08:22:55

标签: iphone cocoa-touch core-animation

我有这个View类。它将子视图添加到自身,然后我想在其中一个上进行CATransform3DMakeRotation(最后一个添加了addSubiew)。它位于顶部,但一旦动画开始,它就在奥得河景色之下。这是我的CATransform3DMakeRotation代码:

    CABasicAnimation *topAnim = [CABasicAnimation animationWithKeyPath:@"transform"];
topAnim.duration=3.3;
topAnim.repeatCount=0;
topAnim.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(0.0, 0, 0, 0)];
float f = DegreesToRadians(180);  // -M_PI/1;
topAnim.toValue=[NSValue valueWithCATransform3D:CATransform3DMakeRotation(f, 1,1, 0)];
//topAnim.delegate = self;
topAnim.removedOnCompletion =NO;
topAnim.fillMode = kCAFillModeForwards;
[[KuvertLasche layer] addAnimation:topAnim forKey:@"flippy"];

我做错了什么? 编辑:此视图位于包含大量其他视图的子视图中:

  • self.view
  • letterView(有3个子视图。在它们上面是KuvertLasche)

如果我将它从letterView中取出并将其放在letterView上方的self.view上,它将进入中途,然后进入其他视图。很奇怪。有什么建议吗?

1 个答案:

答案 0 :(得分:5)

如果我理解正确,当你启动动画时,你的视图部分会在其他视图下消失。之所以发生这种情况,是因为您正在应用的旋转是围绕X轴和Y轴中间的对角线的3-D发生的。当您的视图以3-D翻转时,其中一部分将比其他视图更低。

要防止出现这种情况,您可以通过将图层的zPosition属性设置为足够大的正值,或者将此视图的图层的zPosition设置为较大的负值来更改其他视图的Z位置(除非我将我的标志误认为是Core Animation Z的订购)。

视图图层的一个示例是

KuvertLasche.layer.zPosition = -30.0f;