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。
我有一个位于网格内的左对齐矩形,它会根据经常更新的值调整大小。当值更改时,我更改矩形的 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。