6

是否有可能與動畫改變色調的平滑效果?UINavigationBar的改變色調的顏色與動畫

這並沒有爲我工作:

[UIView beginAnimations:nil context:nil]; 
[self.navigationController.navigationBar setTintColor:[UIColor greenColor]]; 
[UIView commitAnimations]; 

我如果不知道它使用本地蘋果的部件,甚至有可能因爲我估計他們將使用CG生成的梯度......只是想找出之前,我將開始構建自己的解決方案......

乾杯傢伙:)

+0

如果你看到這個帖子,這是歷史,我們發現在另一個線程的解決方案:http://stackoverflow.com/questions/20377628/transition-color/20396308?noredirect=1# 20396308 – Pull 2013-12-05 10:02:36

回答

25

你不會相信我經歷了真正實現這個目標的長度;它讓我感到懊惱不已,這不是股票iOS功能,而tintColor的過渡看起來很醜,而推動/彈出viewController的動畫非常流暢。

There'a很多代碼檢查淡入淡出,我甚至寫了一個名爲PSPDFNavigationAppearanceSnapshot的類來保存導航狀態時彈出。 (我有這個想法從真棒NimbusKit

實際的動畫是很容易的:

[self.navigationController.navigationBar.layer addAnimation:PSPDFFadeTransition() forKey:nil]; 

CATransition *PSPDFFadeTransition(void) { 
    return PSPDFFadeTransitionWithDuration(0.25f); 
} 

CATransition *PSPDFFadeTransitionWithDuration(CGFloat duration) { 
    CATransition *transition = [CATransition animation]; 
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
    transition.type = kCATransitionFade; 
    transition.duration = duration; 
    return transition; 
} 

您可以更加緊湊的代碼;它是從我的iOS PDF庫PSPDFKit中剪下來的,並且我在各個地方使用了淡入淡出,因此也是幫助函數。

+1

爲什麼在PSPDFFadeTransitionWithDuration中你有一個持續時間參數,你永遠不會使用它?它認爲你忘了寫transition.duration =持續時間 – 2012-12-18 21:07:00

+0

正確,需要添加。 – steipete 2012-12-19 00:05:43

4

你不能動畫吧色調 - 能以這種方式進行動畫屬性的列表(一個UIView)是here

我不認爲你能做到這一點,在所有除非你想覆蓋有中性色調與一個UIView其背景顏色改變吧。 backgroundColor是可以動畫的屬性之一。但是如果你想將UIView放在導航欄的頂部,你可能必須要狡猾,我不知道有辦法做到這一點。

另一個想法 - 子類,做繪圖自己的drawRect?

4

我們發現在另一個線程解決方案:Transition Color navBar

溶液動畫的attribut barTinTColor。下面是代碼:

self.navigationController.navigationBar.barTintColor = [UIColor redColor]; 
[UIView animateWithDuration:5.0f animations:^{ 
    self.navigationController.navigationBar.barTintColor = [UIColor blueColor]; 
} completion:^(BOOL finished) { 
}];