Бесконечная горизонтальная прокрутка UIScrollView

У меня есть UIScrollView, размер содержимого которого составляет 1200x480. У меня есть несколько представлений изображений, ширина которых в сумме составляет 600. При прокрутке вправо я просто увеличиваю размер содержимого и устанавливаю смещение, чтобы все было гладко (затем я хочу добавить другие изображения, но это не важно Сейчас). Таким образом, изображения, которые в настоящее время находятся в области просмотра, остаются где-то слева и в конечном итоге должны быть удалены из супервизора.

Теперь проблема, с которой я столкнулся, возникает при прокрутке влево. Что я делаю, так это перемещаю изображения в конец размера содержимого (поэтому добавляю 600 к каждому представлению изображения origin.x), а затем соответственно устанавливаю смещение содержимого. Он работает, когда палец находится на экране, а пользователь перетаскивает (scrollView.isTracking = YES). Когда пользователь прокручивает влево и отпускает (scrollView.isTracking = NO), представления изображений в конечном итоге перемещаются слишком быстро вправо и почти мгновенно исчезают. Кто-нибудь знает, как я могу заставить изображения красиво двигаться и не исчезать, даже если пользователь не перетаскивает вид вручную и уже отпустил его?

Вот мой код для горизонтального перетаскивания:

-(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)];
    } 
}

РЕДАКТИРОВАТЬ: Теперь это работает - я посмотрел StreetScroller, и теперь все в порядке.

Однако теперь я хочу увеличить масштаб прокрутки, но viewForZoomingInScrollView никогда не вызывается.Разве невозможно увеличить масштаб прокрутки с большим размером содержимого?

5
задан Sorin Cioban 25 February 2012 в 16:18
поделиться