1

在我的应用程序中,我使用滚动视图显示 300 张图像 (400 kB)。这需要将近 2 分钟,结果,当我上下滚动时,它并不流畅。

我怎么解决这个问题?

注意:我注意到在我向下滚动到滚动视图的末尾一次后,它变得平滑。滚动问题仅在第一次出现。

4

3 回答 3

0

不要预先加载所有图像。只需加载当前要显示的图像和下一张+最后一张图片。

据我了解,您在加载/显示滚动视图时加载所有图像。由于您有很多图像,因此如果您仅在内存中加载/拥有三个图像,它将更快并节省更多内存。这将是上一个/左显示的图像并且不可见 - 当前显示和可见的图像以及下一个/右图像不可见。

因此,如果您向左移动/滑动,您基本上将滚动视图向左移动并显示已加载的右侧图像。在后台,您将加载下一个右侧图像,同时释放最左侧的图像。

在任何时候,您最多只能加载 4 张图像。

看看 WWDC 2011 的无限滚动视图示例 - 会话 104 高级滚动视图以获得良好的视觉示例和示例代码。

于 2012-04-17T08:59:18.657 回答
0

尝试将其添加到您的加载函数(加载图像的位置)中。如果您使用 while 或 for 循环来加载图像,请将此代码添加到循环中。

NSURL *url=//here url for your image   
dispatch_queue_t currentQueue = dispatch_get_current_queue();
dispatch_queue_t dataConvertorQueue = dispatch_queue_create("Fetching images", NULL);
dispatch_async(dataConvertorQueue, ^{
    NSData *data = [NSData dataWithContentsOfURL:url];
    dispatch_async(currentQueue, ^{
       //replace imageView with your imageView outlet
       imageView.image = [[UIImage alloc] initWithData:data]];
    });
});
dispatch_release(dataConvertorQueue);

此代码可帮助您从 url 获取和显示图像,并且它适用于 tableview。它可能不是你想要的,但它会给你一个关于如何去做的想法。希望它会帮助你。

于 2012-04-17T09:49:52.563 回答
0

我认为将解决您的问题。这个问题可能会给你一些背景信息:

如何像 uitableviewcell 一样重用/回收自定义元素?

于 2012-04-17T09:16:25.000 回答