首页 > 解决方案 > Xamarin Forms TranslateTo Animation 只能工作一次

问题描述

我有一个 Xamarin Forms 应用程序,目前我正在改善该应用程序的用户体验。我为动画添加了以下代码。问题是它只能在设备上运行一次。在模拟器上运行良好。可能是什么问题?如果有人发现问题,那就太好了。

var gestureRecognizer = new TapGestureRecognizer();
        gestureRecognizer.Tapped += async (s, e) =>
        {
                var task1 = this.PlaceHolderTextLabel.TranslateTo(0, -12, 250, Easing.SinInOut);
                var task2 = this.InputControl.TranslateTo(0, 6, 250, Easing.SinInOut);
                await Task.WhenAll(new Task[] { task1, task2 });

                this.InputControl.IsEnabled = true;
                this.InputControl.Focus();
        };

标签: xamarin.forms

解决方案


每次都应该使用TranslationXand TranslationY,因为视图的位置每次都会改变。但是您可以通过TranslationXand获得元素的 X 或 Y 平移增量TranslationY

例如,您可以这样使用:

var task1 = this.mLabel.TranslateTo(0, mLabel.TranslationY - 12, 250, Easing.SinInOut);
var task2 = this.mInputView.TranslateTo(0, mInputView.TranslationY + 6, 250, Easing.SinInOut);
await Task.WhenAll(new Task[] { task1, task2 });

有关此的更多信息:

https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.visualelement.translationx?view=xamarin-forms

https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.visualelement.translationy?view=xamarin-forms


推荐阅读