Iphone 3d动画

时间:2009-12-16 17:27:31

标签: iphone cocoa-touch core-animation

我最近发布了我的问题,但我在这里或其他地方都没有得到答案,也无法再找到我的帖子...... 无论如何,我想试着说明我的观点更清楚,希望你这次可以帮助我。

代码的一部分,看起来像这样:

CABasicAnimation *animation = nil; 
CATransform3D transform;

animation = [CABasicAnimation animationWithKeyPath:@"transform"];

transform = CATransform3DMakeRotation(1.57f, 0.0f, 1.0f, 0.0f); 
value = [NSValue valueWithCATransform3D:transform]; 
[animation setToValue:value];
[animation setAutoreverses:YES]; 
[animation setDuration:0.5f];
[[shieldView layer] addAnimation:animation forKey:@"180"];

会发生什么,是我有一个带有图像的UIImageView。我拿这个视图并围绕z轴旋转半圈(1.57弧形测量)。

现在有另一个视图与在3d中转换的视图重叠。这导致了我的问题:一旦执行转换,转换后的图层就会对重叠视图进行剪裁,但是错误,因此您会看到两个视图的“闪烁”效果。

现在我不知道,为什么会这样。我希望视图能够适当地动画,没有这个'bug',并且视图才能正确显示....因为我没有做任何特别的事情。

我尝试使用'beginAnimations'和'commitAnimations'上下文来覆盖2D变换,这样可以正常工作。这意味着,问题有点隐藏在我的视图的3D旋转中。

你们有这方面的线索吗?我希望我解释得那么好。

1 个答案:

答案 0 :(得分:4)

如果这两个兄弟视图(同一超视图的子视图),它们的图层可能会重叠,可能会创建您看到的视觉工件。您应该能够在视图层次结构中相对于彼此重新定位视图(使一个视图高于或低于另一个视图)或直接设置视图图层的Z位置。如果您执行类似

的操作
shieldView.layer.zPosition = 1.0f;

你的shieldView的图层应该略高于另一个视图的图层(除非我记得错误的坐标空间并且它需要是-1.0f)并且你应该能够避免你现在看到的剪辑。