Frage

aus dem Netz ein Bild heruntergeladen und in einem UIImageView zeigt ist ziemlich einfach. Dies ist jedoch das Bild erfordert vollständig heruntergeladen werden, bevor sie den Benutzer angezeigt wird, vollständig progressive JPEG (und PNG) Bilder zu besiegen.

Wie kann ich die teilweise heruntergeladenen Bilder machen, während die Übertragung geschieht? Ich könnte mir vorstellen, das SDK eine Callback-Funktion zu haben, die das Bild aktualisieren würde, aber ich kann nicht eine solche Funktion finden. Ist es möglich, auf alle mit der aktuellen iOS SDK?

War es hilfreich?

Lösung

Haben Sie versucht, die UIImage teilweise zu machen, wie didReceiveData ... genannt wird? So etwas wie ...

-(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;
    }
}

Andere Tipps

Ich weiß, dass dieser Beitrag hat etwa 1 Jahr, aber nur für den Fall, dass jemand für sie sucht, gibt ein Projekt namens NYXImagesKit das tut, was Sie suchen.

Es hat eine Klasse mit dem Namen NYXProgressiveImageView die eine Unterklasse von UIImageView ist.

Alles, was Sie tun müssen, ist:

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

Auch eine gute Möglichkeit ist, Ihre Bilder als interlaced zu speichern, so dass es Lasten mit geringer Qualität und verbessern mit dem Download. Wenn das Bild nicht interlaced es von oben nach unten geladen wird.

Es gibt jetzt eine kleine Open-Source-Bibliothek oben auf libjpeg-turbo, die leicht Dekodierung und Anzeige von progressiven JPEGs können:

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

finden Sie unter https://github.com/contentful-labs/Concorde

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top