Ich habe eine UIView
innerhalb einer UIScrollView
. Immer wenn sich der UIScrollView
Zoom ändert, möchte ich die gesamte UIView
auf der neuen Zoomstufe neu zeichnen.UIScrollView Inhalt nach jedem Zoom neu zeichnen
In iOS < 3.2, ich tat dies, indem Sie die UIView
im UIScrollView
Ändern der Größe die neue Größe zu machen und dann die zurück zur Identität Einstellung verwandeln, so dass sie es nicht versuchen würden, weiter zu ändern. Mit iOS> = 3.2 verändert die Änderung der Identität jedoch auch die Eigenschaft zoomScale des UIScrollView
.
Das Ergebnis ist, dass, wenn ich zoome (sagen 2x), ich die eingebettete UIView
auf die geeignete Größe anpassen und neu zeichnen. Jetzt aber (seit ich die Transformation auf Identität zurücksetze), denkt die UIScrollView
an zoomScale 1, anstatt an zoomScale 2. Also wenn ich meine maxZoomScale auf 2 gesetzt habe, wird sie immer noch weiter zoomen, was falsch ist.
Ich dachte über die Verwendung der CATiledLayer
, aber ich denke nicht, dass dies für mich ausreicht, da ich nach jedem Zoom neu zeichnen möchte, nicht nur bei bestimmten Zoom-Schwellen wie es versucht.
Kann jemand das richtige Neuzeichnen der UIView
auf einem Zoom tun?
Vielen Dank für Ihre Lösung! Das löst [meine Frage] (http://stackoverflow.com/questions/3970988/how-to-draw-on-a-non-transformed-context-while-zoomed-in-a-catiledlayer). Könnten Sie hier einen Link zu Ihrer Antwort hinterlassen, damit ich Ihnen die richtige Antwort geben kann? – TinkerTank
Wenn diese Methode zum Zoomen eines CATiledLayers verwendet wird, muss der Kachelcache vor dem Aufruf von setNeedsDisplay gelöscht werden. Eine Lösung zum Löschen des CATiledLayerCache finden Sie [hier] (http: // stackoverflow.com/questions/1274680/clear-catiledlayers-cache-wenn-changed-images) – TinkerTank
können Sie bitte erklären, die Eigenschaft der contentSize und wie es gesetzt wird und was es tatsächlich ist. Danke – BDGapps