【发布时间】:2011-03-20 00:21:41
【问题描述】:
我正在尝试构建一个用于所有意图和目的的本机应用程序是 HTML/CSS 和 Javascript。一切正常,但是当 UIWebView 加载时,在填充 DOM、检索图像等时会有延迟。
到底有没有在 UIWebView 上显示背景图像,或者它后面的东西?理想情况下,这将与启动屏幕相同,因此不会影响从斜线过渡到应用的体验。
谢谢
罗比
【问题讨论】:
我正在尝试构建一个用于所有意图和目的的本机应用程序是 HTML/CSS 和 Javascript。一切正常,但是当 UIWebView 加载时,在填充 DOM、检索图像等时会有延迟。
到底有没有在 UIWebView 上显示背景图像,或者它后面的东西?理想情况下,这将与启动屏幕相同,因此不会影响从斜线过渡到应用的体验。
谢谢
罗比
【问题讨论】:
我必须在我的代码中执行以下操作才能在我的 UIWebViews 上获得透明背景 - 我通常在 UIViewController 的 viewDidLoad 方法中执行此操作
self.webView.backgroundColor = [UIColor clearColor];
self.webView.opaque = NO;
我认为您也可以在 UIWebViews 属性中的 Interface Builder 中进行这些更改。
--- 编辑---
而对于背景图片,您可以在 UIWebView 后面放置一个 UIImageView,因为您已经给它一个透明背景。
【讨论】:
webView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"senthil.jpg"]];
【讨论】:
我不相信您想将 UIWebView 设置为透明并在其后面显示图像。
相反,在 UIWebView 加载其内容之前,您应该有某种视图(可能带有您建议的图片,可能带有 UIIndicator 和“使页面变暗”的半透明视图)。
为此,首先你的类应该订阅 UIWebViewDelegate 协议:
@interface myWebView : UIViewController <UIWebViewDelegate> {
// variables etc
}
然后,您可以显示加载视图:
-(void)viewDidLoad {
myView.hidden = NO;
}
最后,您可以覆盖 webViewDidFinishLoad 方法以在加载后将其隐藏
- (void)webViewDidFinishLoad:(UIWebView *)localwebView {
myView.hidden = YES;
}
【讨论】:
将图像添加到 XIB 中的视图控制器或“启动图像”的 Plist。这将从头开始显示启动画面。在 viewDidLoad 中加载 webView 时隐藏 webView
webView.hidden = YES;
像往常一样在 viewDidLoad 中加载带有 HTML 内容的 webView
加载 webView 后,稍后执行更新视图。我认为这将为委托功能提供一些时间来完成并继续进行 UI 更新。
- (void)webViewDidFinishLoad:(UIWebView *)webView {
[self performSelector:@selector(updateWebView) withObject:nil afterDelay:1];
}
-(void) updateWebView {
webView.hidden = NO;
self.view = webViewElement;
// or
[self.view addSubview:webViewElement];
}
我试过上面没有白屏。
【讨论】: