Ho un UIScrollView con dimensioni del contenuto di 1200x480. Ho alcune immagini panoramiche su di esso, la cui larghezza è pari a 600. Quando scorri verso destra, semplicemente aumento la dimensione del contenuto e imposta l'offset in modo da rendere tutto più fluido (voglio quindi aggiungere altre immagini, ma non è importante proprio adesso). Quindi, in pratica, le immagini attualmente nel viewport rimangono da qualche parte a sinistra, eventualmente da rimuovere dalla superview.Scorrimento orizzontale infinito UIScrollView
Ora, il problema che si verifica quando si scorre verso sinistra. Quello che faccio è spostare le immagini alla fine della dimensione del contenuto (quindi aggiungere 600 a ogni origine della vista dell'immagine.x), quindi impostare l'offset del contenuto di conseguenza. Funziona quando il dito è sullo schermo e l'utente trascina (scrollView.isTracking = YES). Quando l'utente scorre verso sinistra e lascia andare (scrollView.isTracking = NO), le visualizzazioni dell'immagine si spostano troppo velocemente verso destra e scompaiono quasi istantaneamente. Qualcuno sa come posso far muovere le immagini bene e non scomparire nemmeno quando l'utente non trascina manualmente la vista e ha già lasciato andare?
Ecco il mio codice per trascinare in senso orizzontale:
-(void) scrollViewDidScroll:(UIScrollView *)scrollView {
CGPoint offset = self.scrollView.contentOffset;
CGSize size = self.scrollView.contentSize;
CGPoint newXY = CGPointMake(size.width-600, size.height-480);
// this bit here allows scrolling towards the right
if (offset.x > size.width - 320) {
[self.scrollView setContentSize:CGSizeMake(size.width+320, size.height)];
[self.scrollView setContentOffset: offset];
}
// and this is where my problem is:
if (offset.x < 0) {
for (UIImageView *imageView in self.scrollView.subviews) {
CGRect frame = imageView.frame;
[imageView setFrame:CGRectMake
(frame.origin.x+newXY.x, frame.origin.y, 200, frame.size.height)];
}
[self.scrollView setContentOffset:CGPointMake(newXY.x+offset.x, offset.y)];
}
}
EDIT: Questo è ora di lavoro - ho dato un'occhiata alla StreetScroller ed è tutto bene adesso.
Tuttavia, ora desidero ingrandire lo scrollview, ma viewForZoomingInScrollView non viene mai chiamato. Non è possibile aumentare lo zoom su una scrollview con una dimensione di contenuto elevata?
qualcuno, per favore? :) –