Tengo un gráfico dibujado dentro de un UIScrollView
. Es uno grande UIView
usando una subclase personalizada de CATiledLayer
como su capa.¿Cómo reinicio después de un zoom UIScrollView?
Al acercar y alejar el UIScrollView
, quiero que el gráfico cambie de tamaño dinámicamente como cuando devuelvo el gráfico de 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 un EXC_BAD_ACCSES
en el dispositivo.
Esto ni siquiera resuelve el problema completamente en el simulador, ya que la próxima vez que el usuario amplía, la transformación se restablece al nivel de zoom en el que estaba, y así parece, si se amplió a 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.
Primero: ¿cómo permito que el gráfico se vuelva a dibujar a sí mismo 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 estoy desasignar las capas mí 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.
Es posible que tenga que ser un poco más específico. ¿Qué errores? Utilizo el código casi exactamente así en una aplicación, y funciona muy bien allí. –
¿por qué la vista de contenido sigue desapareciendo? – domlao
No ha proporcionado mucha información, pero si no está ocultando o eliminando manualmente la vista de contenido de la jerarquía, supongo que se está volviendo más grande que el tamaño de textura admitido por la GPU. Si la vista se vuelve más ancha o más alta que 2048 píxeles, ya no se puede representar en el iPhone y iPhone 3G (no puedo hablar por el 3G S). –