2016-06-22 14 views
-1

Ich lade HTML-String in UIWebView, Text Inhalt in einer Sekunde geladen wird, aber es gibt viele Bilder in HTML String, Ursache dieses Bildes mein UIWebView erhalten einfrieren, nach dem Laden aller Bilder mein Bildschirm kostenlos bekommen benutzen.Bildschirm einfrieren beim Laden UIWebview

Irgendwelche Vorschläge zu diesem Thema?

+0

Haben Sie Delegierte von uiwebview implementiert? Kannst du deinen Code zeigen? –

+0

ja ich implementiert Delegaten, aber ich denke, die Probleme in den Bildern, nach dem Laden aller Bilder mein uiwebview wird frei. –

+0

Hat Ihre 'Webansicht' die volle Bildschirmgröße? –

Antwort

0

Last webview in Dispatch Thread, versuchen Sie dies:

dispatch_async(dispatch_get_main_queue(), ^{ 
    [self.webView loadHTMLString:@"htmlstring" baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]]; 
}); 
0

Ich denke, es ist eiskalt, weil Sie ein Bild von web in Ihrem Haupt-Thread geladen, die auch für die Wiederherstellung Ihrer Benutzeroberfläche verantwortlich ist. Wenn Sie große Bilder in Ihren Thread laden, wird auch die Benutzeroberfläche eingefroren.

Ich würde empfehlen, den Code zu verschieben, der Bilder in einen separaten Thread lädt. (Sie können @ Andey's Antwort verwenden)

+0

Ich versuchte Andey Lösung, aber immer noch Problem, ist das Problem in den Bildern, denn wenn ich das Netz trennen dann String in UIWebview geladen und Bildschirm nicht einfrieren bekommen. –

+0

Sie laden Bilder aus dem Web in Ihre Hauptthread.try in einen separaten Thread. –

0

Wie @Andey sagte, sollten Sie die Hauptwarteschlange versenden, wenn die Sache, die Sie tun, einige Zeit dauern wird und Sie nicht wollen, dass Ihre Ansicht einfrieren.

Try Vorlesung 9: https://itunes.apple.com/en/course/developing-ios-8-apps-swift/id961180099


UPDATE (Swift ver.):

Obwohl ich weiß nicht, wie dies in Obj-C, wird es schreiben so etwas in Swift, die Sie später zurück auf Obj-c übersetzen können.

dispatch_async(notTheMainQueue) { 
    // Some time consuming stuff you're doing (downloading data, calculating..) 
    ... 
    dispatch_async(dispatch_get_main_queue) { 
     // Set your view here, which dispatches *back* to the main queue and will not block your UI 
     ... 
    } 
} 
Verwandte Themen