You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何停止FFImageLoading加载的GIF循环?

解决FFImageLoading加载GIF后停止循环的问题

刚好之前处理过类似的场景,FFImageLoading默认会让GIF无限循环播放,不过有两种实用方法可以帮你搞定这个需求:

方法1:加载时直接指定只播放一次(推荐)

如果你希望GIF播放完一轮就自动停止,别在XAML里直接写Source,改用后台代码调用FFImageLoading的API来加载,同时设置播放次数就行:

using FFImageLoading;
using FFImageLoading.Work;

// 可以放在页面的OnAppearing方法里,或者其他合适的初始化时机
var loadTask = ImageService.Instance.LoadEmbeddedResource("Images.srw-logo-animation.gif")
    .WithGifOptions(options => options.RepeatCount = 0) // 0=只播一次,-1是默认的无限循环
    .Into(Logo);

这样GIF播放完一次就会停在最后一帧,不会反复循环。

方法2:动态停止正在播放的循环GIF

如果已经通过XAML加载了循环的GIF,想要在某个时机(比如用户点击按钮后)停止循环,可以通过获取加载任务或者底层Drawable来控制:

方式A:通过加载任务停止

// 举个例子,在按钮点击事件里写这段代码
if (Logo.Source is FFImageLoading.Forms.CachedImageSource imageSource)
{
    imageSource.LoaderTask?.Stop();
}

方式B:通过GifDrawable停止

using FFImageLoading.Drawables;

var imageServiceView = Logo.AsImageService();
var gifDrawable = imageServiceView.GetDrawable() as GifDrawable;
gifDrawable?.Stop();

小提醒

你现在用的是SvgCachedImage,这个控件主要是为SVG资源设计的,加载GIF的话更推荐用CachedImage控件,兼容性会更好:

<ffimageloading:CachedImage x:Name="Logo" Aspect="AspectFit" HorizontalOptions="Center" VerticalOptions="Center"/>

另外补充下RepeatCount的参数规则:-1是默认的无限循环,0表示播放1次,设置成具体数字(比如3)就会播放指定次数。

内容的提问来源于stack exchange,提问作者Dragon Warrior

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 17:02:29