UIScrollView пользовательское расстояние подкачки - PullRequest
2 голосов
/ 17 мая 2010

У меня есть UIImage (ширина изображения> 320 пикселей) в UIScrollView (охватывает всю ширину экрана) и хочу эффект подкачки.

Все учебники / примеры, которые я нашел, объясняют, как это сделать с несколькими UIImages или UIVIews, но у меня только 1 UIImage в UIScrollView. Моя цель - создать эффект, подобный «рулетке». а скроллвью должна «страница» на каждом маркере ленты?

Как я могу сделать пейджинг на расстояниях меньше ширины UIScrollView?!

1 Ответ

1 голос
/ 17 мая 2010

Я не могу придумать более чистого решения, чем вычисление на лету. Если желаемая длина страницы составляет 100 пикселей, то «сдвиньте» UIImage так, чтобы он оставался относительно реальной страницы. Так что-то похожее на:

CGFloat pageWidth = 100;
int numPages = ceilf(myImageView.bounds.size.width / pageWidth);
scrollView.contentSize = CGSizeMake(numPages * scrollView.bounds.size.width,
                                  scrollView.bounds.size.height);

Затем создайте подкласс метода layoutSubviews представления прокрутки:

- (void)layoutSubviews {
    int numPages = ceilf(myImageView.bounds.size.width / pageWidth);
    CGRect visibleBounds = [self bounds];
    CGFloat start = visibleBounds.origin.x;
    CGFloat offset = start / pageWidth;
    myImageView.frame = CGRectMake(offset, myImageView.frame.origin.y,
                                   myImageView.frame.size.width,
                                   myImageView.frame.size.height);
}   

Я вообще не проверял это, но, надеюсь, он выведет вас на рабочий путь. То, что должен делать, - это перемещать изображение всякий раз, когда вы прокручиваете его, чтобы оно выглядело так, будто каждая "страница" перемещает изображение только на 100 пикселей.

...