【问题标题】:Fading UILabel out, change text, fade back in: only fading in is animatedUILabel 淡出,更改文本,淡入:只有淡入是动画的
【发布时间】:2011-11-21 14:41:21
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    我不认为你可以为同一个属性设置两次动画(在同一个委托内)。还有其他更高级的 API 可以实现更复杂的动画,但我认为您可以使用以下方法轻松伪造:

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

    它只是在 completion 动作中完成动画的第二部分,并将 1.0 秒的时间分成两部分。 YMMV

    【讨论】:

    • 有趣的是,我发现的所有样本都提出了我所尝试的内容,而且似乎没有人关心它是否真的有效。 :-)
    • 如果他们在 Xamarin 的网站上,请将他们指向我 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2014-01-20
    • 2012-12-18
    • 2012-08-14
    • 2020-01-06
    相关资源
    最近更新 更多