Xamarin.Forms 矩形在 WidthRequest 变化时导致动画

Xamarin.Forms Rectangle Causes Animation on WidthRequest Change

我有一个位于网格内的左对齐矩形,它会根据经常更新的值调整大小。当值更改时,我更改矩形的 WidthRequest。

在 Android 上,矩形 立即 跳转到我请求的新宽度。在 iOS 上,它的工作方式相同 如果宽度正在减小 。但是,在 iOS 上,如果宽度增加,矩形将花费大约十帧重新绘制并从中间向外移动到新宽度。这个大约 10 帧的动画只在 iOS 上发生,当宽度增加时就是问题所在。

是什么导致了这个动画,我该如何停止它?

<Grid ColumnSpacing="0">

            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="120" />
            </Grid.ColumnDefinitions>

            <Image Grid.Column="0" Source="{Static art:Art.Icon1}" x:Name="NearbyIcon" IsVisible="True" HorizontalOptions="Start"/>

            <Rectangle
                x:Name="BTBar"
                HorizontalOptions="Start"
                VerticalOptions="Center"
                Margin="9,0,8,0"
                WidthRequest="120"
                HeightRequest="18"
                Stroke="Blue"
                Fill="Blue"
                RadiusX="1"
                RadiusY="1"
                StrokeThickness="1"
                Grid.Column="1" />
</Grid>
        public void UpdateRSSI(double value)
        {
            BTBar.WidthRequest = (percent / 100.0d) * 103;
        }

在 Microsoft 和 Xamarin 社区修复这个已知错误之前,我的解决方案是切换到 BoxView。它具有与 Rectangle 几乎所有相同的属性,但 none 是矩形当前具有的 animations/bugs。它可以随意调整大小。如果您需要不同的边框颜色,您可以随时在第一个 BoxView 之上绘制第二个 BoxView。