我正在使用MonoTouch为iPhone开发一款联系人应用程序。我正在使用自定义UITableViewCell,它显示联系人图像(ABPerson.Image),联系人姓名和其他一些信息。 我在加载联系人图片时使用以下代码:
//CustomTableViewDataSource class
if (person.HasImage)
customCellController.LoadImage (person.Image);
//Custom cell controller class
public void LoadImage(NSData data)
{
ThreadPool.QueueUserWorkItem (p => this.loadImage (data));
}
private void loadImage(NSData data)
{
UIImage image = UIImage.LoadFromData(data);
InvokeOnMainThread(delegate
{
this.imageView.Image = image;
});
}
此代码工作正常,但滚动是慢的方法。有没有人有更好的想法加载联系人图片?
谢谢, 丹尼
答案 0 :(得分:2)
您的实施可能存在很多问题,但代码段不足以找出问题所在。
您可以查看作为MonoTouch.Dialog一部分的图像下载程序,因为它支持此方案,同时从网络或本地文件系统缓存加载图像。
答案 1 :(得分:1)
有一个关于这个主题的优秀博客,可以找到here。
其中涉及此主题 - 除了您实际在customCellController本身中加载图像外,您所看到的内容非常相似。在此示例中,它们在数据源中称为LoadImage()
和loadImage
并传入单元对象,而不是在单元本身中进行计算。您可能会发现这有助于加快滚动速度。