Я не могу придумать более чистого решения, чем вычисление на лету. Если желаемая длина страницы составляет 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 пикселей.