iphone - 如何防止延迟显示我的 UIWebView

标签 iphone ios uiwebview

我必须在表格前包含一些“富文本”说明*;并认为将 UIWebView 添加到 tableview 的标题会起作用。 HTML 是我的资源文件夹中的一个小文件,CSS 在文件中的样式标签中;所以这一切都很好而且独立。

问题是, View 转换为;然后在稍有延迟后,webview 的内容就会出现。效果很刺耳,我认为隐藏 View 并在它准备就绪时淡入会更可取。

我在我的 viewDidLoad 方法中使用下面的代码创建 View 。

UIWebView * wv = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, HEADER_HEIGHT)];
[wv setBackgroundColor:[UIColor clearColor]];
[wv setOpaque:NO];
NSString *path = [[NSBundle mainBundle] pathForResource:@"HeaderMsg" ofType:@"html"];
assert(path != nil);
NSData *htmlData = [NSData dataWithContentsOfFile:path];
[wv loadData:htmlData MIMEType:@"text/html" textEncodingName:@"utf-8" baseURL:nil];
[self.tableView setTableHeaderView:wv];
[wv release];

我发现了 2 个丑陋的解决方法,但我希望有人有更好的解决方案;因为我的变通办法把代码搞得一团糟:

  1. 在您制作 UIMYSCREENViewController,调用一个 [VC preloadWebViewWithDelegate:self]; 制作 webview 的方法 使用调用者作为委托(delegate)。 然后调用者保留 vc 和 等待 webview 发送给它 webviewDidFinishLoad 方法,在 什么时候可以呈现 View 并释放 vc。

  2. 调用 View 可以使webview, 等待它完成,然后创建 新 View 并将 webview 传递给它。

无论如何,这两种“解决方案”都让我有点作呕,所以我希望其他人找到了更好的方法。

(*这些说明大多是带有一些要点的简单样式文本(没有图像或过于激进的样式);但它需要大约 14 个仔细对齐的 UILabel View 才能在没有 web View 的情况下进行模拟 - 并且受制于客户想要更改消息。)

最佳答案

我会创建另一个独立的模型或 Controller 对象来创建和保留 webview,希望在更高级别和之前(可能在应用程序初始化期间)显示带有可以调出 webview 的 UI 的 View 。

将此视为 Action 游戏的预暂存资源,这样它们就不必在游戏循环期间加载,这是一种常见的设计模式。

关于iphone - 如何防止延迟显示我的 UIWebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5134771/

相关文章:

iphone - 在 UItableViewCell 中画一条线

iphone - 在相机覆盖层上使用标准相机按钮 (iPhone)

ios - 如何处理CKNotificationInfo 'desiredKeys' max 3 keys?

iphone - Segue 传递 uiimage 并在 UIwebview 中打开

iphone - Cocoa Touch 中的委托(delegate)与事件

ios - APNS生产证书问题

ios - 核心数据+组合架构

ios - 将数据从一个 View Controller 传递到另一个给出 null

iOS Swift 如何告诉 UIView Controller 我们通过 NSURLProtocol 对象接收到信息

ios - UIWebView 在底部被 UITabBarController 截断