iOS - 同步加载 UIWebView 内容?

发布于 2024-12-11 05:02:12 字数 443 浏览 0 评论 0原文

我有一个包含许多行的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦途 2024-12-18 05:02:12

您可以:

1) 在第一次 heighForRowAtIndexPath 调用时返回默认高度

2) 加载 HTML

3) 等待事件 webViewDidFinishLoad 并将最终高度存储在数组中

  - (void)webViewDidFinishLoad:(UIWebView *)webView

4) 通过调用更新单元格高度

  [self.tableView beginUpdates];
  [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
  [self.tableView endUpdates];

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

  - (void)webViewDidFinishLoad:(UIWebView *)webView

4) Update the cell height by calling

  [self.tableView beginUpdates];
  [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
  [self.tableView endUpdates];

5) Return the final height when heighForRowAtIndexPath is called

穿透光 2024-12-18 05:02:12

如果您的 html 很短,为什么不放入一些内联 CSS 到其中,显式设置文档 bodyheight 参数,然后在将其加载到 UIWebView 之前解析该值?

If the html you have is short, why not put some inline CSS into it which explicitly sets the height parameter of the document body, and then parse that value before you load it into the UIWebView?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文