2012-12-10 39 views
1

我正在開發一個導航系統,向下鑽三個步驟,然後讓您用箭頭導航內容,實際上只是改變了該視圖的內容,因此在技術上導航控制器不會收到任何彈出/推,因爲我一旦我做了強制導航欄的標題爲動畫

self.navigationItem.title = [[[self.symbol valueForKey:@"section_title"] uppercaseString] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

標題改變,因爲它應該,但由於顯而易見的原因doen't動畫。

有沒有辦法迫使它ANIMALE彷彿彈出/推的動作發生了什麼? 類似:

self.navigationItem.direction = NavigationDirectionLeft; 
self.navigationItem.title = @"Whatevah!"; 

,這樣只要標題更改它使舊標題在去從左至右和標題淡入或 方式更好的新標題過渡淡出 在過渡從左至右從左側進入 褪色

[FYI我需要前5.0支持的IOS版本,所以只有5.0> :)]

回答

0

嘗試設置UIView as self.navigationItem.titleView,然後創建一個UILabel並將其添加爲標題。當你想動畫時,通過這個UIView這個標籤動畫,並添加一個新的UILabel和動畫,以取代這一點。你可以爲此使用一些基於塊的動畫。

對於如: -

[UIView animateWithDuration:0.5 
    delay:1.0 
    options: UIViewAnimationCurveEaseOut 
    animations:^{ 
     label.frame = labelFrame; 
    } 
    completion:^(BOOL finished){ 
     NSLog(@"Done!"); 
    }]; 
2

OK,這是不是一個完美的解決方案,但可能會給你一個起點:

導航欄標題之間​​的衰落是相當簡單:

CATransition *fade = [CATransition animation]; 
fade.type = kCATransitionFade; 
fade.duration = 2.0; 
[self.navigationController.navigationBar.layer addAnimation: fade forKey: @"fadeText"]; 
self.navigationItem.title = "new Title"; 

還有其他類型的「開箱即用」轉變,你可以用它來製作動畫標題的位置,因此,例如:

​​

問題在於整個導航欄移動。爲了解決這個問題,您需要在導航欄的子視圖中找到標題標籤的圖層。這個視圖層次結構是'私人'的,所以你不應該把這個代碼提交給商店,但就像我說的...這可能會給你一個起點。

CATransition *fade = [CATransition animation]; 
fade.type = kCATransitionFade; 
fade.duration = 2.0; 

CATransition *move = [CATransition animation]; 
move.duration = 2.0; 
move.type = kCATransitionMoveIn; 
move.subtype = kCATransitionFromRight; 

UILabel * navBarTitleLabel; 
for (UIView * view in self.navigationController.navigationBar.subviews) { 
    if ([NSStringFromClass(view.class) isEqualToString: @"UINavigationItemView"]) { 
     navBarTitleLabel = view.subviews.firstObject; 
     break; 
    } 
} 

[navBarTitleLabel.layer addAnimation: fade forKey: @"fadeText"]; 
[navBarTitleLabel.layer addAnimation: move forKey: @"moveText"]; 

self.navigationItem.title = newTitle; 

你可能會發現你從層需要removeAllAnimations一旦他們完成。我沒有得到充分測試的機會。