2012-09-26 58 views
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轉換混亂了頂部的觀點。

回答

0

我會建議不要動畫視圖控制器的內容視圖。相反,在視圖控制器的內容視圖中創建一個容器視圖併爲其設置動畫。

從您的文章中不清楚overlayView位於您的視圖層次結構中,因此很難給出關於如何防止動畫覆蓋覆蓋視圖的具體說明。您可以嘗試更改overlayView圖層的zPosition,使其顯示在您正在動畫的圖層上方。

相關問題