我遇到了MvxImageViewLoader的奇怪问题。当我加载图像(400K大小)时,它第一次加载正常,但如果我重新进入相同的视图并在ViewDidLoad期间重新加载图像它显示为空。如果我将图像路径更改为缩略图图像(大小为23k),即使重新进入视图,它也会毫无问题地加载。这是我加载图像的方式
var frame = UIScreen.MainScreen.ApplicationFrame;
var myImage = new UIImageView
{
Frame = new CGRect(0, 0, frame.Width, frame.Height)
};
View.Add(myImage);
var myImageLoader = new MvxImageViewLoader(() => myImage);
this.CreateBinding(myImageLoader).To<MyViewModel>(m => m.MyImagePath).Apply();
我正在使用下载缓存,这是setup.cs文件中的一部分:
protected override void AddPluginsLoaders(MvxLoaderPluginRegistry registry)
{
registry.AddConventionalPlugin<Cirrious.MvvmCross.Plugins.DownloadCache.Touch.Plugin>();
registry.AddConventionalPlugin<Cirrious.MvvmCross.Plugins.File.Touch.Plugin>();
base.AddPluginsLoaders(registry);
}
protected override void InitializeLastChance()
{
Cirrious.MvvmCross.Plugins.DownloadCache.PluginLoader.Instance.EnsureLoaded();
Cirrious.MvvmCross.Plugins.File.PluginLoader.Instance.EnsureLoaded();
Cirrious.MvvmCross.Plugins.Json.PluginLoader.Instance.EnsureLoaded();
var configuration = MvxDownloadCacheConfiguration.Default;
var fileDownloadCache = new MvxFileDownloadCache(
configuration.CacheName,
configuration.CacheFolderPath,
configuration.MaxFiles,
configuration.MaxFileAge);
Mvx.RegisterSingleton<IMvxFileDownloadCache>(fileDownloadCache);
base.InitializeLastChance();
}
我尝试使用afterImageChange回调进行调试,并使用正确的路径触发,但即使如此,它也显示为空。
如果我不使用MvxImageViewLoader并在ViewDidLoad期间直接加载路径,即使我重新加载图片也能正常工作:
using (var url = new NSUrl(ViewModel.MyImagePath)
using (var data = NSData.FromUrl(url))
myImage.Image = UIImage.LoadFromData(data);
如果我指定默认图像路径,则会显示默认图像,但主图像不会像以前一样显示。
知道为什么MvxImageViewLoader没有重新加载更大的图像?