如何在Xamarin.Forms的FFImageLoading CachedImage中设置LoadingPlaceholder宽高?
解决FFImageLoading CachedImage中LoadingPlaceholder尺寸过大的问题
我来帮你搞定这个问题!FFImageLoading的CachedImage默认不会自动缩放LoadingPlaceholder指定的图片,所以你的GIF会直接按原尺寸显示,导致过大。这里有个靠谱的解决方案,用LoadingPlaceholderTemplate来自定义占位图的样式和尺寸:
直接修改你的XAML代码,通过模板来控制占位GIF的大小:
<ff:CachedImage Source="image.png" Aspect="AspectFill" WidthRequest="375" HeightRequest="375"> <!-- 自定义加载占位模板 --> <ff:CachedImage.LoadingPlaceholderTemplate> <DataTemplate> <!-- 用FFImageLoading的Image加载GIF保证动画正常,同时设置固定尺寸 --> <ff:CachedImage Source="Spinner64px.gif" WidthRequest="64" HeightRequest="64" Aspect="AspectFit" HorizontalOptions="Center" VerticalOptions="Center"/> </DataTemplate> </ff:CachedImage.LoadingPlaceholderTemplate> </ff:CachedImage>
为什么这个方法有效?
LoadingPlaceholder只是简单指定图片路径,它会默认继承父控件的尺寸或者按图片自身原始尺寸渲染,没法单独控制大小;- 而
LoadingPlaceholderTemplate允许你完全自定义占位元素,你可以在模板里放置任意视图,这里我们用了一个小型的CachedImage来加载GIF,直接给它设置WidthRequest和HeightRequest为64px,同时设置HorizontalOptions和VerticalOptions为Center,让它在主图的中心显示,完美解决尺寸过大的问题。
如果你的GIF本身就是64px的,也可以给模板里的图片加上Aspect="AspectFit",确保它不会被拉伸变形。
内容的提问来源于stack exchange,提问作者Nanji Mange
相关产品推荐
相关产品推荐

