Tengo un gráfico dibujado dentro de a UIScrollView. Es uno grande que UIViewusa una subclase personalizada CATiledLayercomo su capa.
Cuando hago un acercamiento y alejamiento de la imagen UIScrollView, quiero que el gráfico cambie de tamaño dinámicamente como lo hace cuando devuelvo el gráfico viewForZoomingInScrollView. Sin embargo, el Gráfico se redibuja en el nuevo nivel de zoom, y quiero restablecer la escala de transformación a 1x1 para que la próxima vez que el usuario haga zoom, la transformación comience desde la vista actual. Si restablezco la transformación a identidad en scrollViewDidEndZooming, funciona en el simulador, pero arroja una EXC_BAD_ACCSESen el dispositivo.
Esto ni siquiera resuelve el problema por completo en el simulador, porque la próxima vez que el usuario amplía, la transformación se restablece a sí misma al nivel de zoom en el que estaba, y así parece, si tuviera un zoom de 2x, por ejemplo, de repente está en 4x. Cuando termino el zoom, termina en la escala correcta, pero el acto real de acercamiento se ve mal.
Entonces, primero: ¿cómo puedo permitir que el gráfico se vuelva a dibujar en la escala estándar de 1x1 después de hacer zoom, y cómo puedo hacer un zoom uniforme durante todo el proceso?
Editar: Nuevos hallazgos El error parece ser [CALayer retainCount]: message sent to deallocated instance
Nunca voy a desasignar ninguna capa yo mismo. Antes, ni siquiera borraba ningún punto de vista ni nada. Este error fue lanzado sobre el zoom y también sobre la rotación. Si elimino el objeto antes de la rotación y lo vuelvo a agregar después, no arroja la excepción. Esta no es una opción para hacer zoom.













