Следующие фрагменты работают, когда подкачка включена в UIScrollView и смещение страницы должно сохраняться.
Объявите свойство, которое будет вычислять позицию currentPage перед вращением, и установите его в -1 в viewDidLoad
@property (assign, nonatomic) NSInteger lastPageBeforeRotate;
Затем переопределите метод willRotateToInterfaceOrientation:toInterfaceOrientation:duration
и присвойте ему вычисленное значение.
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
int pageWidth = self.scrollView.contentSize.width / self.images.count;
int scrolledX = self.scrollView.contentOffset.x;
self.lastPageBeforeRotate = 0;
if (pageWidth > 0) {
self.lastPageBeforeRotate = scrolledX / pageWidth;
}
[self showBackButton:NO];
}
Затем мы гарантируем, что перед выполнением поворота мы правильно установим смещение содержимого нашего прокрутки, чтобы сфокусировать его на lastPageBeforeRotate
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
if (self.lastPageBeforeRotate != -1) {
self.scrollView.contentOffset = CGPointMake(self.scrollView.bounds.size.width * self.lastPageBeforeRotate, 0);
self.lastPageBeforeRotate = -1;
}
}