Possiedo un UIView
all'interno di uno UIScrollView
. Ogni volta che lo zoom UIScrollView
cambia, voglio ridisegnare l'intero UIView
al nuovo livello di zoom.Ridisegnare i contenuti di UIScrollView dopo ogni zoom
In iOS 3.2 <, stavo facendo questo ridimensionando la UIView
all'interno del UIScrollView
per rendere la nuova dimensione, e quindi impostando la trasformazione torna a Identità, in modo che non avrebbe cercato di ridimensionare ulteriormente. Tuttavia, con iOS> = 3.2, la modifica dell'identità modifica anche la proprietà zoomScale di UIScrollView
.
Il risultato è che ogni volta che eseguo lo zoom (ad esempio 2x), aggiusto la dimensione UIView
incorporata come appropriata e la ridisegna. Comunque ora (dato che ho ripristinato la trasformazione in Identity), lo UIScrollView
pensa che sia ancora una volta su zoomScale 1, invece che su ZoomScale 2. Quindi, se ho il mio maxZoomScale impostato a 2, tenterà comunque di ingrandire ulteriormente, che è sbagliato.
Ho pensato di utilizzare lo CATiledLayer
, ma non penso che questo sia sufficiente per me, dal momento che voglio ridisegnare dopo ogni zoom, non solo a determinate soglie di zoom come si tenta di fare.
Qualcuno sa come eseguire il corretto ridisegno dello UIView
su uno zoom?
Grazie mille per la soluzione! Questo risolve [la mia domanda] (http://stackoverflow.com/questions/3970988/how-to-draw-on-a-non-transformed-context-while-zoomed-in-a-catiledlayer). Potresti lasciare un link alla tua risposta lì, quindi posso darti il giusto credito per rispondergli? – TinkerTank
Se questo metodo viene utilizzato per ingrandire un CATiledLayer, il tile-cache deve essere cancellato prima di chiamare setNeedsDisplay. Una soluzione per la rimozione di CATiledLayerCache è disponibile [qui] (http: // StackOverflow.it/questions/1274680/clear-catiledlayers-cache-when-changing-images) – TinkerTank
puoi spiegare la proprietà di contentSize e come viene impostata e cosa è effettivamente. Grazie – BDGapps