Xamarin Forms TranslateTo Animation仅可运行一次

时间:2019-09-17 17:49:03

标签: xamarin.forms

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

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();
        };

1 个答案:

答案 0 :(得分:0)

您应该每次使用TranslationXTranslationY,因为视图的位置每次都会改变。但是您可以通过TranslationX获得元素的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