简单的任务:我想淡出UILabel
(alpha = 0.0),更改文本,淡化(alpha = 1.0f)并将所有这些动画化。我发现淡出不是动画,我做了一个小测试应用程序。
如果我运行它,我可以看到标签在按下按钮后立即消失,然后再淡入。为什么忽略淡出?我搜索了SO,我发现代码与我正在使用它完全相同。
这里有什么问题?我必须把它分开吗?如果渐弱的动画结束,则创建另一个淡入淡出的动画?
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);
};
答案 0 :(得分: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.0s时间分成两部分。 YMMV