Ios 将mathjax预加载到集合中
(请原谅文字太多) 我试图在一个应用程序中呈现一堆数学问题。假设有30个问题,每个问题大约有7-8个字段(说明、问题、答案选择和回顾) 当我使用MathJax渲染将它们加载到容器中时,我能够成功地做到这一点(我还使用JS中的回调来确保在查看内容之前加载内容) 问题是,这个过程每次都需要几秒钟,我想预加载整个问题集和视图,这样在初始加载之后,问题加载将是瞬时的 我认为使用收藏是最好的方法,我一直在尝试两种方法,但都没有成功:Ios 将mathjax预加载到集合中,ios,swift,collections,rendering,mathjax,Ios,Swift,Collections,Rendering,Mathjax,(请原谅文字太多) 我试图在一个应用程序中呈现一堆数学问题。假设有30个问题,每个问题大约有7-8个字段(说明、问题、答案选择和回顾) 当我使用MathJax渲染将它们加载到容器中时,我能够成功地做到这一点(我还使用JS中的回调来确保在查看内容之前加载内容) 问题是,这个过程每次都需要几秒钟,我想预加载整个问题集和视图,这样在初始加载之后,问题加载将是瞬时的 我认为使用收藏是最好的方法,我一直在尝试两种方法,但都没有成功: 将所有内容作为单元格/项目加载集合,然后跳转到单元格(我遇到的问题是只
- 将所有内容作为单元格/项目加载集合,然后跳转到单元格(我遇到的问题是只有查看的单元格才会加载,然后我想如果它们都加载了,我将使用下一个选项来面对我现在面临的问题)
- 将所有内容加载到一个不可见的子视图中,然后在选中该子视图时将其加载到单元格中(可以提供对加载方式的更多控制)
- 当加载一堆子视图时,每个子视图都带有Mathjax,应用程序会不知所措并崩溃(我认为是内存或cpu造成的,上面写着“与iPad的连接中断”)。如果一个视图中有很多Mathjax,那么这种情况似乎不会发生。我认为这是因为进程在开始之前并不等待彼此完成,而且应用程序无法处理同时运行多个Mathjax渲染李>
- 一般如何构造预压机构
- 如何具体地使循环在重新循环之前等待视图渲染(我有一个进程可以识别Mathjax何时已完全渲染,但我不知道如何使循环等待。该进程当前用于在完成后取消隐藏视图)
var i=0的
;i
我怀疑NSOperations或GCD也可以提供必要的控制,但我对编程非常熟悉,无法成功实施这些概念,更不用说验证它们是否能够解决这个问题了 你有没有试过这种方法?和/或?嗯,我认为它在viewDidLoad设置中不起作用。。根据从另一个表中的选择动态加载问题集。我相信问题在于如何让数学压倒了系统。您对我应该使用什么样的调试方法来确定什么是乱七八糟的有什么建议吗?还有,是否可以缓存或保存呈现形式的内容?所以渲染工作可以在一个点上完成,然后在另一个点上检索(我相信渲染会占用时间和CPU)?和/或?嗯,我认为它在viewDidLoad设置中不起作用。。根据从另一个表中的选择动态加载问题集。我相信问题在于如何让数学压倒了系统。您对我应该使用什么样的调试方法来确定什么是乱七八糟的有什么建议吗?还有,是否可以缓存或保存呈现形式的内容?因此渲染工作可以在一个点上完成,然后在另一个点上检索(我相信渲染会占用时间和CPU)。
for var i = 0; i < objectsKeyValues.count; i++ {
let iInput:String = cDParentVC.string1 + cDContentAbstraction.objectsKeyValues[i]["instructions"]! + cDParentVC.string2
let qInput:String = cDParentVC.string1 + cDContentAbstraction.objectsKeyValues[i]["question"]! + cDParentVC.string2
... for a few more of these
let iView = WKWebView.init(frame: CGRectMake(5,5,300,35), configuration: config)
...same
iView.loadHTMLString(iInput, baseURL: NSBundle.mainBundle().bundleURL)
..same
viewDictArray.append(["iView":iView,"qView":qView,"a1View":a1View,"a2View":a2View,"a3View":a3View,"a4View":a4View,"a5View":a5View,"rView":rView,"pView":pView])
cDLargeContent.invisiView.addSubview(viewDictArray[i]["iView"]!)
...same
}