【问题标题】:Xamarin Forms Showing animated label at startupXamarin Forms 在启动时显示动画标签
【发布时间】:2019-12-29 08:40:50
【问题描述】:

我有问题。我创建了一个带有字符串的 ContentPage:public MainPage(string Status)。 现在,当我使用值“已发送邮件”调用此页面时,我想从顶部滑入标签 2 秒钟,然后再次向上滑动。现在标签位于RelativeLayout 中,如下所示:

<Label x:Name="txtMailSent" HorizontalTextAlignment="Center" TextColor="White" BackgroundColor="Green" Text="A verification mail has been sent."
    RelativeLayout.XConstraint="{ConstraintExpression
    Type=RelativeToParent,Property=Width,Factor=0,Constant=0}"
    RelativeLayout.YConstraint="{ConstraintExpression
    Type=RelativeToParent,Property=Height,Factor=0,Constant=0}"
    RelativeLayout.WidthConstraint="{ConstraintExpression
    Type=RelativeToParent,Property=Width,Factor=1,Constant=0}"
    RelativeLayout.HeightConstraint="{ConstraintExpression
    Type=RelativeToParent,Property=Height,Factor=0.025,Constant=0}"/>

所以我创建了这段代码:

public MainPage(string Status)
{
    InitializeComponent();

    SizeChanged += (s, a) =>
    {
        txtMailSent.TranslateTo(0, -txtMailSent.Height, 1, Easing.Linear);
    };

    if (Status == "Mail sent")
    {
        new Action(async () => await ShowMail())();
    }
}

private async Task ShowMail()
{
    await txtMailSent.TranslateTo(0, 0, 400, Easing.Linear);
}

但是当我启动应用程序并提供该参数时,没有显示任何标签。我做错了什么?

【问题讨论】:

  • 如下所示,您可能应该考虑在 OnAppearing 中触发动画,但我认为您上面的代码的主要问题是您创建了一个指向 ShowMail 的操作,但您没有调用它。仅仅创建动作是不够的。您可以直接调用 ShowMail 函数,所以我不确定您为什么不这样做,但您可能仍然会遇到在页面实际可见之前它开始执行的问题。

标签: c# xamarin xamarin.forms xamarin.android xamarin.ios


【解决方案1】:

我会说您的代码在视觉元素完全呈现之前执行。你可以这样做。

private string status = string.Empty;
public MainPage(string Status)
{
    InitializeComponent();
    status = Status;

    SizeChanged += (s, a) =>
    {
        txtMailSent.TranslateTo(0, -txtMailSent.Height, 1, Easing.Linear);
    };
}

protected async  override void OnAppearing()
{
    if (status == "Mail sent")
    {
        await txtMailSent.TranslateTo(0, 0, 4000, Easing.Linear);
        await Task.Delay(200);
        await txtMailSent.TranslateTo(0, -txtMailSent.Height, 4000, Easing.Linear);
    }
}

【讨论】:

    猜你喜欢
    • 2019-06-02
    • 1970-01-01
    • 2020-06-10
    • 1970-01-01
    • 2016-12-29
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多