2011-03-10 68 views
4

我有兩個按鈕的圖像:一個用於正常狀態,一個用於選定狀態。 當我從選定狀態改回到正常狀態時,我希望在幾秒鐘內發生交叉淡入淡出效果。如何交叉淡入淡出xcode中選中狀態和未選狀態之間的按鈕?

我到目前爲止所做的是使用兩個UIView動畫:第一個從1.0的alpha變爲選定狀態的.5的alpha。然後我切換到正常狀態並執行第二個UIView動畫,從0.5的alpha值到1.0的alpha值。

我並不興奮的視覺效果(突然從選定的過渡到正常圖像)。我也讀過UIView不應該再使用。那麼這裏的正確方法是什麼?代碼示例也會非常有用。

回答

1

我終於找到我需要的東西:不是分配圖片到我的按鈕的選擇和非選擇的狀態,我把我的按鈕,透明,而不是兩個視圖添加到該按鈕,最初的1.0阿爾法和0.0。

當選擇按鈕和我輸入選擇器中指定的方法中,我使用的動畫這兩個視圖之間轉變如下:

NSArray * subviewArray = [button subviews]; 
    [UIView animateWithDuration:2.0 
        animations:^ { 
         ((UIView *)[subviewArray objectAtIndex:0]).alpha = 0.0; 
         ((UIView *)[subviewArray objectAtIndex:1]).alpha = 1.0; 
        } 
        completion:nil]; 

如果按鈕被在移動這種方法也適用過渡。我希望這可以幫助其他人在未來面對同樣的問題!

1

以下內容非常簡單,將在4秒內從所選狀態轉換到未選狀態。唯一的問題是,當按鈕也在同時移動時,轉換效果不佳。

button.selected = TRUE; 
    CATransition *transition = [CATransition animation]; 
    transition.duration = 4.0; 
    transition.type = kCATransitionFade; 
    transition.delegate = self; 
    [button.layer addAnimation:transition forKey:nil]; 
    button.selected = TRUE; 
0

對於我這樣的工作:

​​

但這當我設置相同UIImageUIControlStateHighlightedUIControlStateSelected與以下電話(留下一個電話,我沒有工作)工作:

[button setImage: img forState: UIControlStateSelected | UIControlStateHighlighted]; 
[button setImage: img forState: UIControlStateSelected]; 
[button setImage: img forState: UIControlStateHighlighted];