【发布时间】:2012-02-28 07:56:13
【问题描述】:
我一直在尝试显示来自服务器的大图像,但我必须逐步显示它。
我使用了 UIView 的子类,其中我使用了UIImage 对象,其中我使用了 NSURLConnection 及其委托方法,我也使用了
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;
我在其中添加数据并将其转换为UIImage 对象,并使用UIImage 的drawInRect: 方法绘制矩形。
一切正常,但问题是,当在上下文中绘制图像时,在将整个图像绘制到屏幕上之前,我无法单击屏幕上的其他任何位置。
有什么好的解决方案,即使在屏幕上绘制图像,我也可以点击其他任何地方?
任何帮助都将不胜感激。
编辑:
在didReceiveData 中是否有任何有效的方法可以逐渐模糊图像?所以drawInRect 不会花太多时间来画画。或者如果有人有自定义的drawRect 方法,该方法可以有效地将图像逐步显示为didReceiveData 中接收到的数据。
【问题讨论】:
-
如何在后台线程中运行进程?
-
我尝试在后台运行进程,但它崩溃了,因为我们无法在后台线程中在屏幕上绘制图像,它应该在主线程中。
-
这里的问题是你不断地重绘图像,这阻止了 UI 负责。您可以做的是“过滤”重绘,每 10 或 50 次 didReceiveData 迭代进行一次。
-
是的,你说得对,在 didReceiveData 中多次绘制图像,会产生问题。有没有其他方法可以逐步绘制图像?
-
如果您的图片是 jpeg 格式,您是否尝试过使用渐进式 jpeg (faqs.org/faqs/jpeg-faq/part1/section-11.html)?我不知道这是否会有所帮助,但你可以试试。
标签: iphone uiimageview uiimage http-headers nsurlconnection