Restringir el área desplazable de UIScrollView

Estoy trabajando con UIScrollView para mostrar un documento grande, quiero restringir el área que el usuario puede ver de alguna manera. Casi he logrado el resultado deseado con el siguiente código:

[childView setFrame:CGRectMake(offsetX, offsetY, contentWidth, contentHeight)];
[scrollView setContentSize:CGSizeMake(contentWidth, contentHeight)];

Con offsetX y offsetY siendo números negativos para mover la vista secundaria fuera del área de vista de desplazamiento. Esto funciona perfectamente en el nivel de zoom 1.0 pero no en ningún otro nivel de zoom. he implementado - (void)setZoomScale:(float)zoomScale Me gusta esto:

- (void)setZoomScale:(float)zoomScale {
    [super setZoomScale:zoomScale];
    [childView setFrame:CGRectMake(offsetX * zoomScale, offsetY * zoomScale, contentWidth, contentHeight)];
}

Pero esto no funciona, el desplazamiento se aleja gradualmente cuanto más se amplía la vista. ¿Cuál es la mejor manera de lograr esto?

Gracias, J

preguntado el 22 de mayo de 12 a las 11:05

1 Respuestas

Obviamente, podría fijar la escala de zoom mínima y máxima en 1.

Sin embargo, funciona para mí si configuro contentSize en scrollViewDidZoom:

- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
    [scrollView setContentSize:CGSizeMake(1024*scrollView.zoomScale, 1024*scrollView.zoomScale)];
}

por cierto, asegúrese de desactivar los rebotes para verificar con precisión:

scrollView.bounces = NO;

contestado el 23 de mayo de 12 a las 14:05

¡Gracias, eso funcionó! Parece funcionar perfectamente en scrollViewDidZoom: pero no en setZoomScale: - JWood

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.