我有一个UIWebViews
在多个视图控制器中使用的应用程序.将UIWebViews
用于呈现本地生成的HTML,不需要缓慢的网络接入.
为了节省内存,我只根据viewcontroller viewWillAppear
回调的提示按需加载这些内存.(并卸载屏幕外实例以响应didReceiveMemoryWarning
消息.)
问题是用户看到正在渲染的html,有时伴随着样式闪烁和其他各种令人不快的文物.我宁愿在屏幕外完成渲染,并在准备就绪时显示完全渲染的视图.
viewWillAppear
在UIWebView完全呈现之前,能够不返回将是非常整洁的.但是怎么样?
我UIWebView
通过发送loadHTMLString:baseURL:
消息告诉要呈现什么.这是异步的,并且稍后(很快)将回调webview的委托webViewDidFinishLoad
.
我尝试了内部运行的runloop viewWillAppear
,运行的是NSDefaultRunLoopMode
或UITrackingRunLoopMode
.这适用于模拟器(它向日志抱怨)
在事务中调用[CATransaction synchronize]
但确实有效)但在设备上它会死锁,webViewDidFinishLoad
从未被调用过.
(此外,似乎UIWebView
加载属性不起作用.至少,在我调用之后loadHTMLString:baseURL:
和获得回调之前,它不是真的.)