2010-03-22 13 views
10

मैं अपनी सामग्री लोड होने से पहले एक काला रंगीन UIWebView रखने की कोशिश कर रहा हूं। आईबी में, मैंने UIWebView काले रंग के पृष्ठभूमि रंग को बनाने की कोशिश की, साथ ही साथ, यह एक पारदर्शी पृष्ठभूमि बना रही है और इसके मूल दृश्य की पृष्ठभूमि काली हो गई है। दोनों काम नहीं करते हैं। जब मेरा UIWebView इसकी पृष्ठभूमि लोड करता है तो वह सफेद होता है। मैं इसे कैसे ठीक करूं?UIWebView के रंग को नियंत्रित करने के लिए (सामग्री लोड से पहले)?

* मुझे आशा है कि यह ब्लैक वीएसएस सीएसएस पर पृष्ठभूमि सेट करने के लिए पहले एक HTML स्ट्रिंग लोड करने से पहले (मेरी वास्तविक वेब सामग्री लोड करने से पहले) को उबालने के लिए उबाल नहीं लेता है।

+1

मैं सही समाधान नहीं मिला !! http://stackoverflow.com/a/3316909/456536 – iwill

उत्तर

11

असल में पृष्ठभूमि रंग सेट करने से वेब दृश्य पूरे काले रंग को नहीं बना सकता है। वेब पेज की सामग्री वेब व्यू के भीतर एक सबव्यू में प्रस्तुत की जाती है, एक वेब व्यू में कई अनियंत्रित सबव्यू होते हैं, जिसमें UIScrollView शामिल है जो आपको सामग्री को स्क्रॉल करने की अनुमति देता है, और UIScrollView में UIWebDocumentView शामिल है, जो वेब सामग्री खींचता है। वे आपके वेब व्यू की पृष्ठभूमि से ऊपर हैं, इसलिए वे पृष्ठभूमि को कवर करते हैं, जो आप देख सकते हैं वह UIWebDocumentView है और पृष्ठभूमि रंग सेट करने से आपका वेब संपूर्ण काला दिखाई नहीं दे सकता है।

मुझे लगता है कि समाधान है, आप अपने वेब दृश्य पर एक काला दृश्य डालने का प्रयास कर सकते हैं, और दृश्य को छुपा सकते हैं जब webViewDidFinishLoad: या webViewDidStartLoad: जैसे प्रतिनिधि विधियों को बुलाया जाता है।

+5

कम स्मृति प्रवण समाधान वेबव्यू स्वयं को व्यूविल्लर या डीडस्टार्टलोड/डीडफिनिशलोड पर छुपा/दिखाएगा (यह वास्तव में मैं इसे करता हूं)। – alexleutgoeb

+3

[वेब व्यू सेटऑपेक: नहीं]; – Kassem

25

जिस तरह से मैंने यह किया था वह UIWebView को काले रंग के दृश्य पर रखना था। फिर, हमने वेब पेज और वेबव्यू को स्पष्ट करने के लिए सेट किया है। आईओएस 4.2 में काम करता है।

superview पर:

view.backgroundColor = [UIColor blackColor]; 

WebView पर:

webView.opaque = NO; 
webView.backgroundColor = [UIColor clearColor]; 

वेब HTML में:

<body style="background-color:transparent;"> 
+5

webView.opaque = नहीं; webView.backgroundcolor = [UIColor clearcolor]; मेरे लिए काम किया! धन्यवाद – Mona

+0

मैं पुष्टि कर सकता हूं कि यह अभी भी आईओएस 6.1 और आईओएस के एक निश्चित नए संस्करण पर काम कर रहा है :) – Jonathan

10

वास्तव में, यह वास्तव में आसान है:

[self.webView setOpaque:NO]; 
self.webView.backgroundColor = [UIColor purpleColor]; 

यह पृष्ठभूमि रंग दिखाएगा, और जैसे ही वेबव्यू लोड हो जाएगा, खुशी से गायब हो जाएगा।

0

आईओएस 7 के लिए, यहां एक और उदाहरण है। (मैं blackView प्रयुक्त) अपने कस्टम रंग की पृष्ठभूमि के साथ

- (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]]; 
} 
0

जोड़ें UIView WebView से अधिक (मैं काले रंग का इस्तेमाल किया), और फिर पर इसे दिखाने: "स्व" एक UIViewController कि नेविगेशन नियंत्रक ढेर पर धकेल दिया गया है लोड होने पर वेबव्यू लोड करें और छुपाएं। WebView पृष्ठभूमि पारदर्शी होना आवश्यक है और जड़ को ध्यान में रखते webViewDidStartLoadviewDidLoad()

  • में अपने कस्टम रंग (मेरे मामले में काला)

    • का एक ही पृष्ठभूमि रंग होना चाहिए (वेबदृश्य: UIWebView) में blackView.alpha = 1

    • webViewDidFinishLoad (वेबदृश्य: UIWebView) 0 ,

  • 1

    प्रयास करें नीचे दिए गए चरणों

    का पालन करें,

    सेट UIView और वेबव्यू मेरे लिए यह काम अपारदर्शी = नहीं और पृष्ठभूमि रंग सफेद है

    enter image description here

    वेब दृश्य के लोड से पहले कोड की नीचे पंक्ति जोड़ें,

    _webViewOutlet.backgroundColor = [UIColor colorWithWhite:1 alpha:1]; 
    

    आशा तो यह किसी

    0

    इस सफेद झिलमिलाहट मैं केवल मेरे विचार के रंग के लिए पृष्ठभूमि रंग बदलने को दूर करने के लिए मदद करते हैं। मेरा कोड अधिक सामान्य उदाहरण दिखाने के लिए बैंगनी का उपयोग करता है। काला के रूप में 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) 
        ... 
    } 
    
    संबंधित मुद्दे