【发布时间】:2015-02-08 14:49:18
【问题描述】:
我正试图弄清楚如何提高我的UIScrollView 的性能。它是一个无限滚动的分页滚动视图。在scrollViewDidEndDecelerating 中,页面在当前控制器的前面和后面两个加载。我的问题是页面是非常复杂的视图控制器。分页动画完成后,大约需要 1-2 秒才能再次分页。这取决于设备(iPad Mini 比配备 Retina 的 iPad Mini 差 2-3 倍)。
关于如何解决此问题的任何想法?我相信问题是在scrollViewDidEndDecelerating 中加载视图。
这是我在scrollViewDidEndDecelerating中调用的代码:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
MyPageViewController *page = [storyboard instantiateViewControllerWithIdentifier:@"PageVC"];
[self.scrollView addSubview:page.view];
【问题讨论】:
-
没有代码很难帮你。但是你需要记住,如果你在你的 scrollViewDidEndDecelerating 中加载视图控制器(在主线程中),无论你提前加载多少,你总是会等待下一个(最后一个,新的)。跨度>
-
没错。我很想展示代码,但这是一个跨越多个类的非常复杂的设置。我想我需要一种在滚动视图委托方法之外创建视图控制器的方法。我尝试使用
NSNotificationCenter,但当然这是同步的。我也尝试在后台做一些工作,但这也无济于事。 -
为什么不使用 UIPageViewController?它会自动制作这个东西。
-
不幸的是,这不可能。我在分页期间做了一个复杂的自定义交互式动画。我尝试了几种解决方案(UIPageViewController、带有自定义转换的 UINavigationController),但这是唯一让我接近完美的方法。唯一的问题是在您可以滑动到下一页之前会有这么小的延迟。
-
这并不难,它会很好地工作,将你所有的项目嵌入到 CollectionView 中,你将有一个 collectionView 作为主要,每个单元格都是整个屏幕(你把 pagingEnabled = YES) .在每个单元格中放置一个完整的 viewController。
标签: ios objective-c ipad uiscrollview