2017-01-11 3 views
0

Я следовал за this учебным пособием для создания PageViewController, и он отлично работает, когда я запускаю его на эмуляторе iOS 9.3. Тем не менее, когда я запускаю его на эмуляторе iOS 10.0, он дублирует первый контроллер представления за страницейViewController, поэтому, когда вы прокручиваете влево на первом слайде, вы можете видеть, как начальный viewController заглядывает из-за него, и аналогично, когда вы прокрутите прямо на последнем viewController, вы увидите, что тот же первый viewController заглядывает из-за этого тоже. На устройстве iOS 9.3 есть только белый фон.UIPageViewController дублирует первый ViewController позади PageViewController для iOS 10, но ведет себя нормально с белым фоном для iOS 9.3

Дополнительная информация:

  • Я использую UIPageViewControllerTransitionStyleScroll так есть то, что «отскок» эффект (который является, где вы можете увидеть белые на прошивке 9.3 и дублированный ViewController на прошивке 10)
  • я не могу использовать другой стиль перехода (как и некоторые другие решения предлагают только с помощью «завиток» переход)
  • Я уже пытался UIPageViewController memory leak (см решение по specialvict в этой должности)
  • Чтобы быть ясным, я хочу белый фон за страницейViewController, чтобы при прокрутке влево на первом слайде или вправо на последнем, вы видите только белый цвет.
+0

Пробовал ли вы установить «backgroundColor» в представлении 'UIpageViewController'? – mattsson

+0

@mattsson Я сделал, это белый. То, что вы предлагаете, имеет желаемый эффект на iOS 9, но ничего не меняет на iOS 10. – Marinda

+0

Думаю, вы должны добавить код, чтобы продемонстрировать, что вы делаете. – mattsson

ответ

0

Обнаружено решение. Функция, используемая для создания и настройки viewController и его подзадач, была стандартной и не отличалась от кода, описанного выше. Проблема была в том, что я вызывал эту функцию в viewDidLayoutSubviews, не проверяя, не был ли контейнер уже не инициализирован (контейнерView - это представление, к которому я добавляю pageController).

Чтобы проверить, что происходит, я печатаю короткое сообщение в журнал при инициализации контейнера. Я удалил чек, если (! Self.containerView) и iOS 9 инициализирует контейнер только один раз, а iOS 10 дважды инициализируется. Таким образом, добавив проверку if (! Self.containerView) перед инициализацией containerView, эта проблема устраняется в течение 10.