2014-09-15 4 views
5

J'utilise un UIWebview, mais il y a un fond noir derrière la vue web dans ios8. La même chose fonctionne très bien dans ios7. J'ai également mis opaque à NO.UIWebView Fond transparent dans ios8

+0

Même question ici: http://stackoverflow.com/questions/25813551/rendering-pdf-in-uiwebview-ios-8-causes-a-black-border-around-pdf – Boris

Répondre

-1
Put a instance variable in the in the header file or your class: 

// instance variable for interval timer 
NSTimer *BackgroundIntervalTimer; 
Put these methods in the implementation file: 

- (void)startUIWebViewBackgroundFixTimer { 
    // if > iOS 8 start fixing background color of UIWebPDFView 
    if (!SYSTEM_VERSION_LESS_THAN(@"8.0")) { 
     // hide pdfWebView until background fixed 
     self.pdfWebView.alpha = 0.0; 
     // start interval timer 
     BackgroundIntervalTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(fixBackground) userInfo:nil repeats:YES]; 
    } 
} 

- (void)stopUIWebViewBackgroundFixTimer { 
    [BackgroundIntervalTimer invalidate]; 
    BackgroundIntervalTimer = nil; 
} 

- (void)fixBackground { 
    // stop timer interval 
    [self stopUIWebViewBackgroundFixTimer]; 

    // Assuming self.webView is our UIWebView 
    // We go though all sub views of the UIWebView and set their backgroundColor to white 
    UIView *v = self.pdfWebView; 
    while (v) { 
     //v.backgroundColor = [UIColor whiteColor]; 
     v = [v.subviews firstObject]; 

     if ([NSStringFromClass([v class]) isEqualToString:@"UIWebPDFView"]) { 
      [v setBackgroundColor:[UIColor whiteColor]]; 

      // background set to white so fade view in and exit 
      [UIView animateWithDuration:0.25 delay:0.0 options:UIViewAnimationOptionCurveEaseOut 
          animations:^{ 
           self.pdfWebView.alpha = 1.0; 
          } 
          completion:nil]; 
      return; 
     } 
    } 
    // UIWebPDFView doesnt exist yet so exit and try later 
    [self startUIWebViewBackgroundFixTimer]; 
} 
Now put this line right after the line where you load the pdf: 

// if iOS 8 check if pdfWebView got subview of class UIWebPDFView 
[self startUIWebViewBackgroundFixTimer]; 
0

Essayez d'ajouter UIWebview en tant que sous-vue par programmation.

WebView = [[UIWebView alloc]initWithFrame:CGRectMake(264, 10, 745, 576)]; 
    WebView.userInteractionEnabled = YES; 
    [self setBorderToView: WebView]; 
    WebView.scrollView.bounces = NO; 
    [WebView setBackgroundColor:[UIColor clearColor]]; 
    [WebView setOpaque:NO]; 
    [WebView loadHTMLString: embedHTML baseURL: nil]; 
    [self.view addSubview: WebView]; 

Espérons que ce soit utile!

0

J'ai également fait face au même problème, après ne pas avoir obtenu la bonne solution j'ai fait un tour en utilisant le masquage.

 CALayer *aLayer = [CALayer layer]; 
     aLayer.backgroundColor = [UIColor blackColor].CGColor; 
     aLayer.frame = CGRectMake(origin.x, origin.y, widthOfVideo, heightOfVideo); 
     objWebView.layer.mask = aLayer; 

Et cela a fonctionné pour moi. J'espère que cela peut vous être utile.