Il mio UIScrollView è popolato con un grande contenuto e quindi ingrandito con "setZoomScale: animato", in modo che si adatti al frame della vista. La vista appare correttamente ingrandita e posizionata correttamente nella vista a scorrimento. Tuttavia, l'utente è in grado di scorrere all'esterno del contenuto (il colore dello sfondo della vista a scorrimento indica). Sembra che possa scorrere fino alla dimensione del contenuto originale (come se il contenuto non fosse stato ingrandito). Stranamente, dopo che l'utente ha effettuato lo zoom manualmente la prima volta, tutto funziona correttamente e la vista a scorrimento è nuovamente vincolata alla dimensione del contenuto.UIScrollView scorre troppo dopo lo zoom iniziale
Ho cercato sul Web e ho analizzato i documenti e gli esempi Apple, ma non ho trovato nessuno con lo stesso problema. Gli esempi Apple sembrano mostrare la stessa cosa che faccio io.
Il mio contenuto è una vista personalizzata derivata da UIView e il cui CALayer è sostituito da un CATiledLayer (come negli esempi di Apple). Il disegno faccio me stesso in drawLayer: inContext :.
Ecco un frammento di codice da 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 dichiarazione NSLog mostra un impostato correttamente contentSize e zoomscale ...
sperando che ci sia qualcosa di ovvio che mi manca ...
Qualcuno aveva una soluzione per questo? Ho lo stesso problema, proprio il contrario. My Scrollview è troppo piccolo per visualizzare l'immagine contenuta (non riesco a scorrere fino alla fine dell'immagine). Ma dopo aver eseguito lo zoom una volta tutto è a posto. – Maverick1st
Ho finito per impostare lo zoomScale sul successivo runloop (invece che direttamente da loadView), che ha funzionato: "[self performSelector: @selector (initialZoom) withObject: nil afterDelay: 0];". Ma ho anche riscritto molte altre cose, quindi non sono sicuro che sia l'unica cosa necessaria. – fishinear
Alla fine ho avuto la stessa idea e funziona perfettamente. Un bonus che si ottiene, quando si imposta la scala di zoom in viewDidAppear, è che l'utente vede uno zoom animato e quindi sa che l'immagine che vede è zoomabile :) – Maverick1st