2015-04-09 2 views
1

Я в настоящее время разрабатываю версию iPad для своего iPhone-приложения. У меня есть UIPageViewController, у которого UIViewController может идти вперед или назад.Грязная анимация на UIPageViewController от iPad

Для этого я использую

- (void)setViewControllers:(NSArray *)viewControllers direction:(UIPageViewControllerNavigationDirection)direction animated:(BOOL)animated completion:(void (^)(BOOL finished))completion 

Он хорошо работает на iPhone, но на IPad анимация не очень чистый. Я получаю некоторые черные поля, когда анимация близка к завершению.

Я попытался запустить огонь прямо с UIPageViewController, и он отлично работает.

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

Мой код в UIViewController:

- (IBAction)backHandler:(id)sender { 
    UIPageViewController *pvc = (UIPageViewController *) self.parentViewController; 
    [pvc previousPage]; 
} 

Мой код в UIPageViewController:

- (void)previousPage { 
    UIViewController *vc = [self pageViewController:self viewControllerBeforeViewController:[self.viewControllers firstObject]]; 
    [self setViewControllers:@[vc] direction:UIPageViewControllerNavigationDirectionReverse animated:YES completion:nil]; 
} 

Вы знаете, как я могу решить эту проблему анимации?

Большое спасибо!

ответ

0

Я думаю, что у меня была та же проблема.

Я решил вызвать метод с небольшой задержкой:

func delayBlock(delay:Double, closure:()->()) { 
    dispatch_after(
     dispatch_time(
      DISPATCH_TIME_NOW, 
      Int64(delay * Double(NSEC_PER_SEC)) 
     ), 
     dispatch_get_main_queue(), closure) 
} 

, а затем:

delayBlock(0.1){ 
       self.setViewControllers([nextPageVC], direction: UIPageViewControllerNavigationDirection.Forward, animated: true, completion: nil) 
      } 

Дайте ему попробовать и дайте мне знать!

Смежные вопросы