2011-11-21 199 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