从网络下载图像并在UIImageView中显示图像非常容易。但是,这要求图像在向用户显示之前完全下载图像,并完全击败Progressive JPEG(和PNG)图像。

转移完成时,如何渲染部分下载的图像?我会想象SDK具有一些可以更新图像的回调函数,但是我找不到这样的功能。当前的iOS SDK是否有可能?

有帮助吗?

解决方案

您是否试图在didReceivedata被称为…的情况下部分渲染uiimage?就像是 …

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    //TODO: add some error handling in case the image could not be created
    UIImage *img=[UIImage imageWithData:data];
    if (img) {
        self.imageView.image=img;
    }
}

其他提示

我知道这篇文章大约有1年,但以防万一有人在寻找它,有一个名为 nyximageskit 那做了您想要的。

它有一个名字的课 NYXProgressiveImageView 那是一个子类 UIImageView.

您要做的就是:

NYXProgressiveImageView * imgv = [[NYXProgressiveImageView alloc] init];
imgv.frame = CGRectMake(0, 0, 320, 480);
[imgv loadImageAtURL:[NSURL URLWithString:@"http://yourimage"]];
[self.view addSubview:imgv];
[imgv release];

另外,一个很好的选择是将图像保存为 interlaced 因此,它以低质量加载并通过下载来改进。如果图像未交错,则将其从上到下加载。

现在,Libjpeg-Turbo的顶部有一个小的开源库,它允许解码和显示渐进的JPEG:

let imageView = CCBufferedImageView(frame: ...)
if let url = NSURL(string: "http://example.com/yolo.jpg") {
    imageView.load(url)
}

https://github.com/contentful-labs/concorde

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top