褪色UILabel,更改文本,淡入淡出:只有淡入效果

时间:2011-11-21 14:41:22

标签: c# cocoa-touch uikit xamarin.ios uilabel

简单的任务:我想淡出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);
};

1 个答案:

答案 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