Мое приложение имеет многоуровневое представление в стиле учебника, которое пользователи просматривают, чтобы узнать о приложении. Это реализовано так же, как описанное в этом уроке. Внедрив его как для iOS 7, так и для 8, я сравниваю, как они работают, и обнаружил проблемы с последними - здесь я запускаю Xcode 6 GM.
Кажется, что UIPageViewController передает представления после завершения перехода. Я перепробовал методы делегата, чтобы узнать, что происходит:
- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray *)pendingViewControllers
{
NSLog(@"Frame size before: %@", NSStringFromCGRect([(UIViewController*)pendingViewControllers[0] view].frame));
}
- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
{
NSLog(@"Frame size after: %@", NSStringFromCGRect([(UIViewController*)previousViewControllers[0] view].frame));
}
И вот пример вывода:
Frame size before: {{0, 0}, {600, 600}}
Frame size after: {{0, 0}, {320, 568}}
Это проявляется так: проведите по экрану влево, чтобы вытащить следующий вид, и обратите внимание на 32-pt-белое пространство внизу нового представления. Как только переход завершен, он врывается в правильную компоновку.
Возможно, это ошибка в iOS 8? В данный момент я все догадываюсь.