2016-04-17 5 views
-1

sehr langsam ist. Ich benutze CIFilter, um ein UIImage zu erstellen, und füge es dann auf einem UIImageView hinzu. Das Erstellen dieses Bildes ist sehr schnell und ich kann es in der Bildansicht hinzufügen. Die gesamte Benutzeroberfläche bleibt jedoch für einige Sekunden stehen, bis das gefilterte Bild angezeigt wird. Ich habe überprüft, dass der CIFilter-Aufruf schnell ist. Ich denke, die Langsamkeit wird von UIImageView verursacht, um das Bild zu rendern. Warum ist es so langsam, wenn das Bild bereits erstellt wurde? Im Folgenden finden Sie den Code zum Erstellen eines Filters für ein Bild.Die Verwendung von CIFilter, um ein Bild zu erstellen, führt dazu, dass das Rendern auf iOS

Der Aufruf der oben genannten Methoden geschieht auf einem Hintergrund Thread, dann verwende ich Schlagmethode, um es in einer Bildlaufansicht hinzuzufügen.

dispatch_async(dispatch_get_main_queue(), { 
      self.filterScrollView.addSubview(uiView) 
     }) 

Wenn ich die "self.filterScrollView.addSubview (UIView)" Kommentar aus, läuft die UI reibungslos. Warum dauert das Rendern des Bildes lange? Genauer gesagt passiert es am Simulator. Es funktioniert viel schneller beim Ausführen auf einem Gerät.

Antwort

0

Aber die ganze UI ist Stopp für ein paar Sekunden, bis er das gefilterte Bild zeigt

Ein Problem dieser Art legt nahe, dass das Verfahren, in dem Sie die UIImageView Besteck image (nicht in Frage gezeigt) wird auf einem Hintergrundthread aufgerufen. Du darfst das nicht tun.

+0

Ich habe diese beiden Methoden Aufruf an einen Hintergrund Thread. Und rufe nur addSubViews() im Hauptthread auf. Aber es blockiert immer noch die Benutzeroberfläche. Es scheint, dass der Methodenaufruf addSubView() die Benutzeroberfläche blockiert. Ich verstehe nicht, wenn das Bild bereits generiert, warum das Rendern auf UI so lange dauert. –

+0

Wenn Sie nur 'addSubview' im Hauptthread aufrufen, dann machen Sie andere Dinge zur Bildansicht in einem Hintergrundthread. Ich sage _not_ das zu tun. Sie verbergen weiterhin den Code, der für diese Frage wirklich wichtig ist, deshalb kann ich Ihnen keine spezifischere Hilfe geben ... – matt

Verwandte Themen