我想在加載內容之前有一個黑色的UIWebView。在IB中,我嘗試將UIWebView的背景顏色設置爲黑色,並且使其具有透明背景並使其父視圖的背景爲黑色。兩者都不起作用。當我的UIWebView加載它的背景是白色的。我怎樣才能解決這個問題?如何控制UIWebView的顏色(在內容加載之前)?
*我希望這不會歸結爲不必首先加載HTML字符串將背景設置爲黑色可見CSS(加載我的實際網頁內容之前)。
我想在加載內容之前有一個黑色的UIWebView。在IB中,我嘗試將UIWebView的背景顏色設置爲黑色,並且使其具有透明背景並使其父視圖的背景爲黑色。兩者都不起作用。當我的UIWebView加載它的背景是白色的。我怎樣才能解決這個問題?如何控制UIWebView的顏色(在內容加載之前)?
*我希望這不會歸結爲不必首先加載HTML字符串將背景設置爲黑色可見CSS(加載我的實際網頁內容之前)。
實際上設置背景顏色不能使網絡視圖全黑。 Web頁面的內容呈現在Web視圖的子視圖中,Web視圖包含許多未公開的子視圖,包括允許滾動內容的UIScrollView,以及包含UIWebDocumentView的UIScrollView,該UIWebDocumentView可以繪製Web內容。它們位於Web視圖的背景之上,因此它們覆蓋背景,您可以看到的是UIWebDocumentView,並且設置背景顏色不能使Web視圖全黑。
我想解決的辦法是,你可能會嘗試在你的web視圖上放置一個黑色視圖,並在調用代理方法(如webViewDidFinishLoad:
或webViewDidStartLoad:
)時隱藏視圖。
較少的內存容易解決方案將隱藏/顯示WebView本身viewwillappear或didstartload/didfinishload(這實際上是我這樣做)。 – alexleutgoeb 2010-12-09 10:40:47
[webView setOpaque:NO]; – Kassem 2014-06-29 06:34:36
我這樣做的方式是將UIWebView放在黑色視圖上。然後,我們設置網頁和web視圖清晰。適用於iOS 4.2。
在上海華:
view.backgroundColor = [UIColor blackColor];
在web視圖:
webView.opaque = NO;
webView.backgroundColor = [UIColor clearColor];
在Web HTML:
<body style="background-color:transparent;">
其實,這是非常簡單的:
[self.webView setOpaque:NO];
self.webView.backgroundColor = [UIColor purpleColor];
這將顯示背景顏色,並且只要webview加載它就會快樂地消失。
對於iOS 7,這裏是另一個例子。 「自我」是一個已經被推到導航控制器堆棧一個UIViewController:
- (void) loadView
{
UIWebView *webView = [[UIWebView alloc] initWithFrame: [[UIScreen mainScreen] bounds]]; // iOS 7 - make the web view the entire display
// -- http://stackoverflow.com/questions/2491654/how-to-control-the-color-of-a-uiwebview-before-contents-load --
webView.backgroundColor = [[Settings sharedInstance] backgroundColor];
webView.opaque = NO; // setting this to NO fixes the background color problem
webView.delegate = self;
self.view = webView;
NSBundle *thisBundle = [NSBundle mainBundle];
NSString *path = [thisBundle pathForResource: @"Instructions" ofType: @"html"];
NSURL *instructionsURL = [[NSURL alloc] initFileURLWithPath: path];
[webView loadRequest: [NSURLRequest requestWithURL: instructionsURL]];
}
添加的UIView(我用blackView)與您的自定義背景顏色(我用黑色)在WebView中,然後再顯示它加載WebView並在加載時隱藏。 的WebView必須有透明背景和根視圖必須在自定義顏色(在我的情況黑色)
的背景顏色相同的viewDidLoad中()
在webViewDidStartLoad( webView:UIWebView) blackView.alpha = 1
in webViewDidFinishLoad(webView:UIWebView) blackView.alpha = 0
刪除此白色忽悠我只能改變的backgroundColor我的看法的顏色幫助。我的代碼使用紫色來顯示更一般的例子。黑色僅用作UIColor.black
編輯loadView
工作不適合我,但viewWillAppear
工作得很好
override func viewWillAppear(_ animated: Bool) {
...
webView.isOpaque = false
webView.backgroundColor = UIColor(red: 41/255, green: 45/255, blue: 91/255, alpha: 1)
...
}
我找到了完美的解決方案! http://stackoverflow.com/a/3316909/456536 – iwill 2012-03-22 03:56:38