iPad 的 UIPageViewController 上的脏动画

Posted

技术标签:

【中文标题】iPad 的 UIPageViewController 上的脏动画【英文标题】:Dirty animation on iPad's UIPageViewController 【发布时间】:2015-04-09 12:21:40 【问题描述】:

我目前正在开发我的 iPhone 应用程序的 iPad 版本。我有一个UIPageViewController,其UIViewController 可以前进或后退。

为此我使用

- (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];

你知道我该如何解决这个动画问题吗?

非常感谢!

【问题讨论】:

【参考方案1】:

我想我也有同样的问题。

我解决了调用该方法的问题:

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)
            

试一试,告诉我!

【讨论】:

以上是关于iPad 的 UIPageViewController 上的脏动画的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 这是由 UISegmentedControl 控制的 UIPageViewController,还是这是啥?

错误:页面控制跳转两次单页交换

iPad 和 iPad 2 渲染 CSS 不同?

不同 iPad 版本和 iPad 型号的 UI 缩放?

iPad、iPad 2 上的边框半径问题

iPad 3(或新 iPad)上的 CSS 媒体查询