在 UIPageViewController 中实例化页面后非常不稳定、缓慢的翻页

Posted

技术标签:

【中文标题】在 UIPageViewController 中实例化页面后非常不稳定、缓慢的翻页【英文标题】:Very choppy, slow page turn after instantiating a page in UIPageViewController 【发布时间】:2015-08-20 19:52:27 【问题描述】:

我有一个页面控制器,其中有三个页面或视图控制器。在我调用切换页面的方法(下面的帖子)并尝试滑动到另一个页面后,动画运行得非常缓慢且不稳定。大多数情况下,视图也会因为视图控制器的框架不适合屏幕而变得混乱。我认为不是实际切换页面,而是再次创建所有内容的新实例,但我似乎无法理解为什么它会这么慢,因为在我的正常代码中,我根据需要实例化每个视图并且它不会变慢当我滑动切换视图时向下。

(滑动到下一个视图也需要大约 5 秒)

此外,当我更改视图时,我会在我的页面视图控制器中重新排序“viewControllerBeforeViewController”方法,以便在我滑动时视图的顺序保持不变。

更新:我在我的一个视图中设置了一个摄像头。我相信这会导致速度缓慢,因为当我跳过加载该视图时一切都很好。但是我需要在我的应用程序中加载该视图:/

这是我的代码:

- (void)handleButtonTap:(NSNotification *)notification


changeOrder=1;
[self setViewControllers:@[[self.storyboard instantiateViewControllerWithIdentifier:@"one"] ] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:nil];




- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController

if ([viewController isKindOfClass:[NavView2ViewController class]])
    return nil;
if(changeOrder ==1)

    if ([viewController isKindOfClass:[NavView2ViewController class]])
    
        return nil;
    
    if ([viewController isKindOfClass:[MainStoryViewController class]])
    
        return [self.storyboard instantiateViewControllerWithIdentifier:@"Profile"];
    
    return [self.storyboard instantiateViewControllerWithIdentifier:@"Main"];

return [self.storyboard instantiateViewControllerWithIdentifier:@"Profile"];



- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController



if ([viewController isKindOfClass:[NavViewController class]])
    return nil;
if(changeOrder==1)


    if ([viewController isKindOfClass:[MainStoryViewController class]])
    
        return [self.storyboard instantiateViewControllerWithIdentifier:@"one"];
    
    return [self.storyboard instantiateViewControllerWithIdentifier:@"Profile"];


return [self.storyboard instantiateViewControllerWithIdentifier:@"one"];


【问题讨论】:

【参考方案1】:

我在其中一个子视图中创建了一个具有三个视图的 UIPageViewController 和一个带有相机控制的 UIImagePicker。 这是链接: https://github.com/ShashwatMittal/UIPageViewController.git

让我知道它是否适合您。希望对您有所帮助!

【讨论】:

以上是关于在 UIPageViewController 中实例化页面后非常不稳定、缓慢的翻页的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 带有 4 个 UIViewController 的 UIPageViewController

UIPageViewController 只有一个内容视图控制器

在 UIPageViewController 中设置 UIScrollView 的内容大小

在两页模式下如何实现可缩放的 UIPageViewController?

导航栏在 UIPageController 下无法正常工作?

如何在 UICollectionView 中实现页面之间的间距?