MvxImageViewLoader没有重新加载更大的图像

时间:2015-11-15 11:34:53

标签: ios xamarin mvvmcross

我遇到了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没有重新加载更大的图像?

0 个答案:

没有答案