1

我将MvxImageViewLoader用于MvvmCross Xamarin应用程序。

这个组件非常棒,并且大大简化了图像的加载,但它(至少,开箱即用)非常基本,大多数现代应用程序都需要一些到达器功能,例如,加载/处理图像或图像很好出现/过渡(可能带有自定义动画)。

我看到有DefaultImagePath属性,但那是静态图像,我可能默认使用它,但这不是动画视图或其他东西

那么,有没有办法自定义/扩展加载器行为默认图像出现图像转换(从默认到加载))等?


而且我还注意到加载器缓存了图像,即使我触发绑定属性更改(保持图像 url 相同)它也不会刷新图像。我想,“缓存”实际上意味着缓存等等,但是如果我需要更改用户图标或其他东西怎么办......我怎样才能使用图像加载器刷新缓存?

谢谢!

4

2 回答 2

0

正如您在上面的评论中已经提到的,您可以使用默认 iOS'UIActivityIndicatorView来显示进度,您应该在 afterImageChangeAction 中隐藏进度,您可以检查UIImageView.Image字段是否不为空,以确保图像已加载。

关于缓存,这里并不容易。默认情况下MvxImageViewLoader依赖于 MvvmCross 框架的IMvxFileDownloadCache接口实现。此接口只有一个公共方法RequestLocalFilePath(),因此即使您从 IoC 容器 ( Mvx.Resolve()) 中获取实例,您也无法清理现有缓存(为此您需要重置类private _entriesByHttpUrl的字段MvxFileDownloadCache)。

如果你真的需要这个,你必须复制粘贴现有的 MvxFileDownloadCache 类并进行调整。但我不确定你需要这个的用例。如果你从网上下载图片,图片的 URL 是缓存中的一种键,所以如果你需要重新加载,只需更改 URL。

也许您可以使用一些老式的方法,例如将 GET 参数添加到 URL:http ://mydomain.com/images/myimage.jpg?timestamp=123456 。通常这对任何地方都有帮助:-)。虽然我没有用 测试它MvxImageViewLoader,但这只是我最好的猜测。

于 2013-08-09T21:25:14.437 回答
0

那么,有没有办法自定义/扩展加载器行为(默认图像出现、图像转换(从默认到加载))等?

不 - 标准 MvvmCross 图像视图不支持淡入/淡出/动画占位符显示等高级功能,而且据我所知,没有人提供有关如何完成此操作的任何示例或教程。

要添加此类功能,您可以使用常规软件技术 - 继承、聚合和剪切、复制、粘贴。例如,您可以简单地AgatImageView 根据MvxImageView.cs创建您自己的应用程序所需的行为。

在http://mvvmcross.wordpress.com/的 N=18 和 N-19 中给出了一些创建自己的数据绑定控件的示例

于 2013-06-24T14:14:25.220 回答