0

說我有兩個UILabel s(labelOnelabelTwo),我需要在兩個標籤之間交叉淡入淡出。達到這種效果的最佳方式是什麼?兩個UILabels之間的交叉淡入淡出

我一直在使用[UIView beginAnimations:@"crossFade" context:nil];等方式淡出labelOne然後淡入labelTwo嘗試,但有一個比較明顯的差距當兩個標籤在一個低透明度,你既可以通過看。我需要一個很好的乾淨交叉淡入淡出效果。我有一種感覺,我需要使用CABasicAnimation,但我會很感激一些指導。提前致謝!

回答

2

這將使一個標籤(或任何視圖)褪色而另一個標籤(或任何視圖)消失。在動畫的一半中,兩者都將處於不透明度50%。要單獨控制alpha,請爲每個標籤使用單獨的動畫並延遲其中一個。

label_to_show.alpha = 0.0; 
label_to_hide.alpha = 1.0; 

[UIView beginAnimations:nil context:nil]; 

label_to_show.alpha = 1.0; 
label_to_hide.alpha = 0.0; 

[UIView commitAnimations]; 
0

您可以嘗試使用動畫曲線並找到可接受的外觀,但我認爲您會做得更好,只需在兩個標籤下方維護第三個視圖以在淡入淡出發生時保持背景外觀。

如果您的意思是您可以同時看到兩個標籤不會同時褪色,但會快速消失到標籤開始不清楚的位置,請將其替換爲相同淡入淡出級別的新標籤,然後淡入淡出它迅速達到完全可見。

我說「淡入淡出」,但它也可能看起來很不錯,可以在標籤頂部放置背景色視圖,並繼續使視圖變得更加不透明,切換底下的標籤,然後再次將其淡入淡出。

+0

謝謝亞當。有沒有其他更優雅的方法來解決這個問題,而不是必須使用額外的視圖?我提到過`CABasicAnimation`,因爲我看到有些人談論使用@「opacity」鍵在UILabels之間進行成功的交叉淡入淡出,但我不確定如何處理這種方法。 – Skoota 2010-12-22 08:09:28

0

我已經實現了這樣的東西,它工作得很好。

[UIView transitionWithView:self duration:0.3 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{ 
    _label1.hidden = YES; 
    _label2.hidden = NO; 
} completion:nil];