我正在从Xamarin过渡到.NET MAUI,并为我的应用程序创建了一个底部表单,并希望有一个平滑的动画上升和下降。但是即使我使用的是Easing.SinIn
,也没有平滑的过渡,只是突然上升和下降。此外,BottomSheet.TranslateTo(BottomSheet.X, finalTranslation, 450, Easing.SinIn);
和BottomSheet.TranslateTo(BottomSheet.X, finalTranslation, 450);
做同样的事情,即使它们的行为不同。下面的代码是我为底部工作表的过渡而编写的,因此底部工作表的上下高度取决于底部工作表中上下文的高度。当我点击底部表单时,它会上下移动,因为底部表单的高度取决于上下文的高度,所以效果很好。我只是需要一个平稳的过渡,上下,但不知何故,它不工作。
private void MoveBottomSheet(bool close)
{
double initialTranslation = Microsoft.Maui.Devices.DeviceInfo.Idiom == Microsoft.Maui.Devices.DeviceIdiom.Phone ? -5.0 : -15.0;
double maxContentHeight = ContextDescription.Height;
double maxTranslation = maxContentHeight + 20.0;
double finalTranslation;
if (_isInitialOpen)
{
// set the initial position of the bottom sheet here
finalTranslation = initialTranslation;
_isInitialOpen = false;
}
else
{
finalTranslation = close ? initialTranslation : -maxTranslation;
}
Debug.WriteLine($"finalTranslation: {finalTranslation}");
BottomSheet.TranslateTo(BottomSheet.X, finalTranslation, 450, Easing.SinIn);
}
字符串
1条答案
按热度按时间olhwl3o21#
这可能与过渡的持续时间有关。我写了一个自定义控件:可以平稳地上升和下降的
BottomSheet
。可以参考示例代码:1.创建
BottomSheetControl.cs
:字符串
XAML代码:
型
1.创建容器:
PanContainer.cs
个型
1.然后在
NewPage1
中使用它。型
代码隐藏:
型