我有一个有几页的UIPageViewController。每一页都是相同的视图控制器,但是会跟踪页码,并显示PDF的正确页面。问题是,在卷曲效果生效之前,需要加载和绘制每个PDF页面(您的手指在屏幕上滑动,在加载之前什么都不会发生)。有没有关于如何加速或预加载下一页的建议?谢谢你的帮助。
发布于 2012-03-21 11:23:17
我现在使用的应用程序也有类似的问题。我的解决方案是保留对加载的上一个和下一个控制器的引用作为根视图控制器的属性,然后从那里加载视图。我没有使用PageViewController,因为客户端坚持让的看起来像FlipBoard...so,我也缓存了生成的GLTexture。它的工作原理应该类似,只是在当前页面加载时存储下一个和前一个页面,并将该控制器传递到您的"loadNextPage“或其他方法中。
编辑:这里是我的项目中的一个示例(我已经简化了)
First Load (NH是我的程序的前缀,因此您需要替换您自己的类):
NHViewController *child = [NHViewController loadPageNum:actualNum];
[self.view addSubview:child.view];
self.curController = child;
child.delegate = self;
[self initializePages:NHPageLoadBoth];后续加载(翻页):
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];初始化页面:
- (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中的下一个或上一个页面的方法中实例化它们。
https://stackoverflow.com/questions/9797866
复制相似问题