Ich führe einige CG-Zeichenoperationen in einen CGContext aus, den ich für MKMapOverlayView erstellt habe. Nachdem ich in meinen Kontext gezeichnet habe, erstelle ich ein Bild und füge es in den von MapKit bereitgestellten Kontext ein.
%Vor% Gibt es eine Möglichkeit, myContext
einfach in context
zu kopieren, ohne ein Bild erstellen zu müssen?
Mir ist klar, dass einige von Ihnen sagen werden, "warum nicht einfach direkt in den Kontext zeichnen, den MapKit bietet". Leider gibt es beim Zeichnen in context
einen Zeichenfehler. Apple untersucht derzeit dieses Problem für uns, aber in der Zwischenzeit müssen wir einen Workaround schaffen. Diese Workaround, die ich oben vorgestellt habe, ist meine "beste" Einstellung, aber es ist ein bisschen auf der langsamen Seite.
P.S. Ich habe ein Kopfgeld angefangen, da ich auch hier eine Antwort suche. Speziell ziele ich auf OS X. Also sollte die Antwort dort funktionieren. Das OP suchte nach einer Antwort auf iOS.
Sie könnten einen CGLayerRef verwenden. Der Ebenenref ist wie ein Unterkontext, in den Sie mehrere Male zeichnen und dann in den ursprünglichen Kontext abflachen, wenn Sie mit dem Zeichnen des Inhalts der Ebene fertig sind.
Es wird normalerweise verwendet, um viele Zeichenaufrufe und nicht jeden einzelnen Aufruf gemeinsam zu nutzen.
Ich weiß nicht, ob das Problem immer noch behoben werden kann oder ob die Leistung besser oder schlechter als der Zwei-Kontext-Ansatz ist. Ich müsste mehr über Ihre Ziele und Anforderungen wissen. Möchten Sie beispielsweise vermeiden, dass zwei Kontexte verwendet werden, um eine zweite Kopie zu vermeiden, oder weil Sie den Speicher für das zweite Bild nicht bezahlen möchten?
Tags und Links objective-c swift cgcontext core-graphics