首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加速UIPageViewController

加速UIPageViewController
EN

Stack Overflow用户
提问于 2012-03-21 10:34:30
回答 1查看 3.8K关注 0票数 3

我有一个有几页的UIPageViewController。每一页都是相同的视图控制器,但是会跟踪页码,并显示PDF的正确页面。问题是,在卷曲效果生效之前,需要加载和绘制每个PDF页面(您的手指在屏幕上滑动,在加载之前什么都不会发生)。有没有关于如何加速或预加载下一页的建议?谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-21 11:23:17

我现在使用的应用程序也有类似的问题。我的解决方案是保留对加载的上一个和下一个控制器的引用作为根视图控制器的属性,然后从那里加载视图。我没有使用PageViewController,因为客户端坚持让看起来像FlipBoard...so,我也缓存了生成的GLTexture。它的工作原理应该类似,只是在当前页面加载时存储下一个和前一个页面,并将该控制器传递到您的"loadNextPage“或其他方法中。

编辑:这里是我的项目中的一个示例(我已经简化了)

First Load (NH是我的程序的前缀,因此您需要替换您自己的类):

代码语言:javascript
复制
NHViewController *child = [NHViewController loadPageNum:actualNum];
[self.view addSubview:child.view];
self.curController = child;
child.delegate = self;
[self initializePages:NHPageLoadBoth];

后续加载(翻页):

代码语言:javascript
复制
    NHPageLoadSettings pageToLoad = NHPageLoadNext;
    if(direction == NHPageDirectionNextPage)
    {
        self.prevController = self.curController;
        self.curController = self.nextController;
        self.nextController = nil;
    }
    else
    {
        self.nextController = self.curController;
        self.curController = self.prevController;
        self.prevController = nil;
        pageToLoad = NHPageLoadPrev;
    }

    UIView *nextView = self.curController.view;
    [self.view addSubview:nextView];
    [mCurView removeFromSuperview];
    mCurView = nextView;

    [self initializePages:pageToLoad];

初始化页面:

代码语言:javascript
复制
- (void)initializePages:(NHPageLoadSettings)pagesToLoad
{
    if(pagesToLoad & NHPageLoadNext)
    {
        NSUInteger nextPageNum = [self.curController.pageNum unsignedIntegerValue]+1;
        self.nextController = [NHViewController loadPageNum:nextPageNum];
    }
    if(pagesToLoad & NHPageLoadPrev)
    {
        NSUInteger prevPageNum = [self.curController.pageNum unsignedIntegerValue]-1;
        self.prevController = [NHViewController loadPageNum:prevPageNum];
    }
}

这样,您将始终准备好相邻页面。然后,只需传递self.nextController或self.prevController,而不是在检索UIPageViewController中的下一个或上一个页面的方法中实例化它们。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9797866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档