UINavigationController にクールなアニメーション効果を追加しようとしていますが、それを行うと、その上にあると思われる他のビューの上に表示される他のビューが台無しになることがわかりました。
たとえば、navivc は UINavigationController です。overlayview は navivc のスーパービューのサブビューであり、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 変換により、上部のビューが台無しになりました。