在UIScrollView中为按钮延迟加载图像的策略?

时间:2010-04-17 16:48:09

标签: iphone uiview uiviewcontroller

我有一个包含UIButtons的水平UIScrollView(尽管它可以是任何对象)。我想只在用户滚动并且看到它们时才下载这些按钮的图像。我还想在下载图像时在每个按钮上运行一个activityindicator。这是我尝试过的结果:

  1. 检查uiscrollview的内容偏移量并下载可见按钮的图像。问题:在子类UIButton中显示获取活动视图的问题并且不希望使用,因为只有在滚动停止后才下载图像。

  2. 将子视图(不是按钮)添加到UIScrollview,希望使用视图的ViewController在viewDidAppear上启动下载。问题:viewDidAppear似乎永远不会被调用(因为我使用的是addSubView?)。

  3. 我见过其他应用程序进行此类加载但需要一些典型设置的指导。 Ebay的应用程序就是一个很好的例子。所有项目都有默认图像,直到项目进入视图,然后运行activityindicator并下载项目唯一图像。

    感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

大多数此类应用使用的是UITableView,而不是普通的滚动视图。 Joe Hewitt的Three20框架有一个TTImageView类,可以进行延迟图像加载,非常适合这种用途。

答案 1 :(得分:0)

没有实际尝试,这是我的想法:

您可以使用UIScrollViewDelegate方法scrollViewDidScroll:找出滚动视图滚动完成的时间,然后使用[UIScrollView contentOffset]确定滚动视图的哪个部分可见并{{1确定按钮在滚动视图的可见部分内的位置。有一个方法可以检查按钮是否已加载其图像,如果没有,则加载它并在必要时刷新视图。