Swift开发iOS开发

使用 UIPageViewController 进行翻页时出现的

2018-10-30  本文已影响0人  Stormstout

使用UIPageViewController时进行快速翻页,系统就会出现如下warning

2018-10-29 23:57:11.443910+0800 HistoricalLiterature[3117:832888] Unbalanced calls to begin/end appearance transitions for <ReaderViewController: 0x15de18a40>.

原因:上次动画还没结束,然后又开始了新的动画。 这样就导致不能成功切换页面,而是一个白色无内容的页面.(我的是出现上个页面的内容)
解决方案:动画执行过程中,关闭翻页控制器视图的用户交互;动画执行完毕之后再次打开。

/**
     *  @brief 转场动画即将开始
    *
    *  @param pageViewController     翻页控制器
    *  @param pendingViewControllers 即将展示的控制器
    */
- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray<UIViewController *> *)pendingViewControllers {
    // 转场动画未执行完,关闭用户交互
    pageViewController.view.userInteractionEnabled = NO;
}

/**
 *  @brief 该方法会在 UIPageViewController 翻页效果出发之后,尚未完成时执行
 *
 *  @param pageViewController      翻页控制器
 *  @param finished                动画完成
 *  @param previousViewControllers 前一个控制器(非当前)
 *  @param completed               转场动画执行完
 */
- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
{
    if (completed && finished) {                //这里需要注意的是.如果用用户翻页未完成 又回来了将,不进入判断,这里看需求注释
        // 转场动画完成,开启用户交互
        pageViewController.view.userInteractionEnabled = YES;
    }
}

参考 UIPageViewController

上一篇下一篇

猜你喜欢

热点阅读