在我的应用程序中,我使用滚动视图,其中显示300图像(400 kB)。 这需要将近2分钟,因此,当我向上和向下滚动时,它并不顺畅。
我该如何解决这个问题?
注意:我注意到,在向下滚动到一次scrollview结束后,它变得平滑。 滚动问题仅在第一次出现。
答案 0 :(得分:0)
请勿预先加载所有图像。只需加载要显示的图像和下一个+最后一张图片。
据我所知,您在加载/显示滚动视图时加载所有图像。由于你有很多图像,如果你只加载/拥有三个图像,它将会更快,更省内存。 这将是前一个/左侧显示的图像并且不可见 - 当前显示的和可见的图像以及不可见的下一个/右图像。
因此,如果您向左移动/向左滑动,则基本上将滚动视图向左移动并显示已加载的右图像。在后台,您将加载下一个右侧图像,同时取消分配最左侧的图像。
您始终只能加载最多4张图像。
查看WWDC 2011的无限scrollview示例 - 会话104高级滚动视图,以获得良好的可视化示例和示例代码。
答案 1 :(得分:0)
我认为this会解决您的问题。这个问题可能会给你一些背景信息:
How to reuse/recycle custom element like uitableviewcell does?
答案 2 :(得分: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);
此代码可帮助您从网址中获取和显示图像,并且使用tableview可以很好地工作。它可能不是您想要的,但它会让您了解如何做到这一点。希望它会帮助你。