0
我想向UINavigationController添加一個很酷的動畫效果,但是我發現一旦我這樣做,就會弄亂顯示在其他視圖之上的其他視圖假設它是最重要的。向UINavigationController添加動畫導致在最頂層顯示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的視圖顯示在overlayview之上。
看來問題只發生在「變換」路徑上,我嘗試了其他關鍵路徑,例如,地位,規模,翻譯等等,所有這些看起來都是正確的。但3D轉換混亂了頂部的觀點。