Mam UIScrollView, którego rozmiar treści to 1200x480. Mam na nim kilka widoków obrazu, których szerokość wynosi do 600. Kiedy przewijam w prawo, po prostu zwiększam rozmiar zawartości i ustawię przesunięcie tak, aby wszystko było gładkie (chcę dodać inne obrazy, ale to nie jest ważne teraz). Zasadniczo obrazy znajdujące się w rzutni pozostają gdzieś po lewej stronie, aby w końcu usunąć je z widoku.Nieskończone przewijanie w poziomie UIScrollView
Problem, który pojawił się podczas przewijania w lewo. Robię to, przesuwając obrazy na koniec rozmiaru zawartości (dodaj 600 do każdego origin.x) widoku obrazu, a następnie ustaw odpowiednio offset zawartości. Działa, gdy palec jest na ekranie, a użytkownik przeciąga (scrollView.isTracking = YES). Gdy użytkownik przewinie w lewo i puści (scrollView.isTracking = NO), widoki obrazów będą się przesuwały zbyt szybko w prawo i znikają niemal natychmiast. Czy ktokolwiek wie, w jaki sposób mogłem ładnie przesuwać obrazy i nie znikać, nawet jeśli użytkownik nie ręcznie przeciąga widoku i już go puści?
Oto mój kod do przeciągania w poziomie:
-(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: To teraz pracuje - Musiałem spojrzeć na StreetScroller i to wszystko jest dobre teraz.
Jednak teraz chcę powiększyć widok przewijania, ale viewForZoomingInScrollView nigdy nie jest wywoływany. Czy powiększenie przewijania o dużym rozmiarze nie jest możliwe?
ktoś, proszę? :) –