Xamarin Forms MacOS 中的 FadeTo 动画无法正常工作

Posted

技术标签:

【中文标题】Xamarin Forms MacOS 中的 FadeTo 动画无法正常工作【英文标题】:FadeTo Animation in Xamarin Forms MacOS not working 【发布时间】:2021-01-21 15:34:33 【问题描述】:

我正在 Xamarin Forms MacOS 中创建自定义框架。框架本身看起来不错,但想法是在被选中时淡入。我创建了一个可以成功运行的可绑定属性,并且 TranslateBox 方法运行良好。

问题是await this.FadeTo(1, 1250, Easing.Linear);。没有动画发生,而是在 1250 秒后出现。

public class CustomFrame : Frame

    public bool IsExpanded
    
        get  return (bool)GetValue(IsExpandedProperty); 
        set  SetValue(IsExpandedProperty, value); 
    

    public static readonly BindableProperty IsExpandedProperty = BindableProperty.Create(
        nameof(IsExpanded),
        typeof(bool),
        typeof(CustomFrame),
        false,
        propertyChanged: IsExpandedChanged
    );

    private static void IsExpandedChanged(BindableObject bindable, object oldVal, object newVal)
    
        var getInstance = (CustomFrame)bindable;
        getInstance.TranslateBox();
    

    public void TranslateBox()
    
        Device.BeginInvokeOnMainThread(async () =>
        
            if (this.IsExpanded)
            
                await this.FadeTo(1, 1250, Easing.Linear);
            
            else
            
                await this.FadeTo(0, 1250, Easing.Linear);
            
        );
    
 

任何线索是什么导致了这个问题?这是一个已知的错误吗?如果是,是否有任何解决方法/黑客?

【问题讨论】:

【参考方案1】:

我在本地测试过,效果很好。

使用两个按钮单击事件进行测试以更改 IsExpanded 属性。

Xaml 代码:

<local:CustomFrame x:Name="MyFrame" BackgroundColor="#2196F3">
   <Lable Text="Welcome to Xamarin.Forms!" FontSize=""36/>
</local:CustomFrame>
<Button Text="Animate" Clicked="Button_Clicked_1"/>
<Button Text="AnimateBack" Clicked="Button_Clicked_2"/>

Xaml.cs 代码:

void Button_Clicked_1(System.Object sender, System.EventArgs e)

    MyFrame.IsExpanded = true;


void Button_Clicked_2(System.Object sender, System.EventArgs e)

    MyFrame.IsExpanded = false;

注意:Xamarin.Forms 的版本是4.8.0.1451,如果不是最新版本,您可以更新它以检查。

【讨论】:

@DiddanDo 嗨,它也有动画。

以上是关于Xamarin Forms MacOS 中的 FadeTo 动画无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.Forms.Forms.Init(e) Onlaunched 中的 FileNotFoundExeception

xamarin.forms 中的页面生命周期事件

ScrollView 问题中的 Xamarin.Forms 捏手势

Xamarin.Forms 中的 EmguCV 实现

Xamarin.Forms 中的死锁

xamarin.forms 中的推送通知