Monotouch中带有联系人图像的UITableView滚动速度非常慢

时间:2011-06-22 12:54:47

标签: uitableview xamarin.ios contacts

我正在使用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;
    });
}

此代码工作正常,但滚动是慢的方法。有没有人有更好的想法加载联系人图片?

谢谢, 丹尼

2 个答案:

答案 0 :(得分:2)

您的实施可能存在很多问题,但代码段不足以找出问题所在。

您可以查看作为MonoTouch.Dialog一部分的图像下载程序,因为它支持此方案,同时从网络或本地文件系统缓存加载图像。

答案 1 :(得分:1)

有一个关于这个主题的优秀博客,可以找到here

其中涉及此主题 - 除了您实际在customCellController本身中加载图像外,您所看到的内容非常相似。在此示例中,它们在数据源中称为LoadImage()loadImage并传入单元对象,而不是在单元本身中进行计算。您可能会发现这有助于加快滚动速度。