我正在尝试向 UINavigationController 添加一个很酷的动画效果,但是我发现一旦我这样做,它会弄乱显示在其他视图之上的其他视图,这些视图应该在它之上。
例如navivc 是一个UINavigationController overlayview 是navivc 的superview 的子视图,并且放置在navivc 之上。
...
CATransform3D t1 = CATransform3DIdentity;
t1.m34 = 1.0/-900;
t1 = CATransform3DScale(t1, 0.7, 0.7, 0.3);
t1 = CATransform3DRotate(t1, 15.0f*M_PI/180.0f, 1, 0, 0);
CABasicAnimation *move = [CABasicAnimation animationWithKeyPath:@"transform" ];
//[move setFromValue:[NSNumber numberWithFloat:0.0f]];
[move setToValue:[NSNumber valueWithCATransform3D:t1]];
[move setDuration:0.3f];
move.removedOnCompletion = NO;
move.fillMode = kCAFillModeForwards;
[move setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
CAAnimationGroup *group = [CAAnimationGroup animation];
group.fillMode = kCAFillModeForwards;
group.removedOnCompletion = NO;
[group setDuration:0.3f];
[group setAnimations:[NSArray arrayWithObjects:move, nil]];
[navivc.view.layer addAnimation:move forKey:@"coolanimation"];
...
动画是正常且正确的,但是现在 navivc 的视图显示在覆盖视图的顶部。
似乎问题只发生在“变换”路径上,我尝试了其他关键路径,例如位置、比例、平移等,所有这些似乎都是正确的。但是 3D 变换弄乱了顶部的视图。