如何防止延迟显示我的UIWebView

时间:2011-02-27 17:43:44

标签: iphone ios uiwebview

我必须在表单前加上一些“富文本”说明*;并认为将UIWebView添加到tableview的标题将起作用。 HTML是我资源文件夹中的一个小文件,CSS位于文件中的样式标记中;所以这一切都很好,自成一体。

问题是,视图转换;然后经过一小段时间后,webview的内容就会出现。效果很刺耳,我不认为隐藏视图并在准备就绪时将其淡入其中是不可取的。

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

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的方法 使用调用者作为委托。 然后呼叫者保留vc和 等待webview发送它 webviewDidFinishLoad方法,at 哪个时候它可以呈现视图 并释放vc。

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

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

    (*说明书大多是简单的,带有一些项目符号的样式文字(没有图像或过于激进的样式);但它需要大约14个精心对齐的UILabel视图才能在没有webview的情况下模拟这一点 - 并且受制于客户想要改变信息。)

2 个答案:

答案 0 :(得分:1)

我会创建另一个独立的模型或控制器对象来创建和保留webview,希望在更高级别和之前(可能在app init期间)显示带有可以调出webview的UI的视图。

将此视为与动作游戏的预暂存资源相同,以便在游戏循环期间不必加载它们,这是一种常见的设计模式。

答案 1 :(得分:0)