Mi UIScrollView se completa con un gran contenido y luego se amplía con "setZoomScale: animado", de modo que se ajuste al marco de desplazamiento de vista. La vista aparece correctamente alejada y posicionada correctamente en la vista de desplazamiento. Sin embargo, el usuario puede desplazarse fuera del contenido (se muestra el color de fondo de la vista de desplazamiento). Parece que puede desplazarse hasta el tamaño del contenido original (como si el contenido no hubiera sido alejamiento). Por extraño que parezca, después de que el usuario hace zoom manualmente la primera vez, todo funciona bien, y la vista de desplazamiento está restringida al tamaño del contenido de nuevo.UIScrollView se desplaza demasiado después del zoom inicial
He buscado en la web, he revisado los documentos y ejemplos de Apple, pero no he podido encontrar a nadie que tenga el mismo problema. Los ejemplos de Apple parecen mostrar lo mismo que yo.
Mi contenido es una vista personalizada que se deriva de UIView, y cuyo CALayer se reemplaza por un CATiledLayer (como en los ejemplos de Apple). El dibujo lo hago yo mismo en drawLayer: inContext :.
Aquí es un fragmento de código de MyScrollViewController:
- (void)loadView {
CGRect frame = [UIScreen mainScreen].applicationFrame;
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:frame];
scrollView.maximumZoomScale=1.0;
scrollView.delegate = self;
... setup theContentView ...
scrollView.contentSize = theContentView.bounds.size;
scrollView.contentInset = UIEdgeInsetsMake(20, 20, 20, 20);
[scrollView addSubview:theContentView];
self.view = scrollView;
double zoomScale = 0.5; // hardcoded for testing
[scrollView setZoomScale:zoomScale animated:NO];
NSLog(@"zoomscale=%g contentview=%@ contentsize=%@", zoomScale, NSStringFromCGSize(theContentView.bounds.size), NSStringFromCGSize(scrollView.contentSize));
[scrollView release];
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return theContentView;
}
La declaración NSLog muestra un conjunto correctamente contentSize y zoomscale ...
esperando que hay algo obvio que me falta ...
¿Alguien ha tenido una solución para esto? tengo el mismo problema, al revés. Mi vista de desplazamiento es pequeña para mostrar la imagen contenida (no puedo desplazarme hacia la parte inferior de la imagen) pero después de hacer zoom una vez todo está bien. – Maverick1st
Terminé configurando el zoomScale en el próximo runloop (en lugar de directamente desde loadView), que funcionó: "[self performSelector: @selector (initialZoom) withObject: nil afterDelay: 0];". Pero reescribí muchas otras cosas también, así que no estoy seguro de si eso es lo único que se necesita. – fishinear
Finalmente tuve la misma idea y funciona perfectamente. Una ventaja que obtienes al configurar la escala de zoom en viewDidAppear es que el usuario ve un zoom animado y, por lo tanto, sabe que la imagen que ve es zoomable :) – Maverick1st