iOS - 同步加载 UIWebView 内容?
我有一个包含许多行的 UITableView,每行都包含一个 UIWebView。这个webView的内容存储在我的数据库中(在应用程序上),tableView中每个单元格的高度是根据我的UIWebView的滚动高度计算的。
问题是,loadHtmlString
方法是异步工作的,因此当调用 UITableView get 的 heighForRowAtIndexPath
方法时,数据尚未加载到 UIWebView 中(因为它是异步工作的)。所以我无法计算单元格所需的高度。
那么问题来了,UIWebView的内容是否可以同步加载呢?我的 html 文本非常短,因此同步加载它不应该花费那么长时间。
编辑: 是否可以计算 html 字符串的预期高度而不将其放入 UIWebView 中,我知道这可以使用纯文本,我不知道 html
I have a UITableView with many rows, each row contains a UIWebView. The content of this webView is stored in my database (on the app), and the height of each cell in tableView is calculated based on the scroll height of my UIWebView.
Here is the problem, the loadHtmlString
method works asynchronously so when heighForRowAtIndexPath
method of UITableView get's called, the data hasn't been loaded in the UIWebView (because it works asynchronously). So I cannot calculate the required height for the cell.
So here is the question, is it possible to load the content of a UIWebView synchronously? my html text is very short, so it shouldn't take that long to load it synchronously.
EDIT:
Is it possible to calculate the expected height of an html string without placing it inside a UIWebView, I know that this is possible using plain text, I don't know about html
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以:
1) 在第一次 heighForRowAtIndexPath 调用时返回默认高度
2) 加载 HTML
3) 等待事件 webViewDidFinishLoad 并将最终高度存储在数组中
4) 通过调用更新单元格高度
5) 在 heighForRowAtIndexPath 时返回最终高度被称为
You could:
1) Return the default height at the first heighForRowAtIndexPath call
2) Load your HTML
3) Wait for the event webViewDidFinishLoad and store in an array the final height
4) Update the cell height by calling
5) Return the final height when heighForRowAtIndexPath is called
如果您的 html 很短,为什么不放入一些内联
CSS
到其中,显式设置文档body
的height
参数,然后在将其加载到UIWebView
之前解析该值?If the html you have is short, why not put some inline
CSS
into it which explicitly sets theheight
parameter of the documentbody
, and then parse that value before you load it into theUIWebView
?