2011-11-21 248 views
1

簡單的任務:我想淡出一個UILabel out(alpha = 0.0),改變文本,淡入到(alpha = 1.0f)和所有這些動畫。我發現淡出不是動畫,我做了一個小測試應用程序。淡入淡出UILabel,改變文字,淡入淡出:只有淡入淡出

如果我運行它,我可以看到當按下按鈕時標籤立即消失,然後消失。爲什麼忽略淡出?我搜索到了,我發現了完全像我使用它的代碼。

這裏有什麼問題?我必須把它分開嗎?如果淡出動畫結束,創建另一個淡入淡出的動畫?

UIButton btn = UIButton.FromType(UIButtonType.RoundedRect); 
btn.Frame = new RectangleF(40, 40, 100, 30); 

window.AddSubview(btn); 

UILabel lbl = new UILabel(new RectangleF(100, 100, 100, 30)); 
lbl.Text = "A label"; 
window.AddSubview(lbl); 
window.MakeKeyAndVisible(); 

btn.TouchUpInside += delegate { 
    UIView.Animate(1.0f, delegate { 
     lbl.Alpha = 0.0f; 
     lbl.Alpha = 1.0f; 
    }, null); 
}; 

回答

2

我不認爲你可以動畫兩次相同的屬性(在同一代表內)。還有其他的,更先進的,API,以便更復雜的動畫,但我認爲你可以僞裝這一個容易使用:

btn.TouchUpInside += delegate { 
    UIView.Animate (0.5f, delegate { 
     lbl.Alpha = 0.0f; 
    }, delegate { 
     UIView.Animate (0.5f, delegate { 
      lbl.Alpha = 1.0f; 
     }); 
    }); 
}; 

它只是做動畫的完成行動中的第二部分,並拆分1.0時間在兩點。 YMMV

+0

有趣的是,我發現的所有樣本都提出了我所嘗試的內容,而且似乎沒有人關心它實際上不起作用。 :-) – Krumelur

+0

如果他們在Xamarin的網站上,請將它們指向我:-) – poupou

+0

Nono,所有的ObjC。但仍然。 – Krumelur