UIWebView ios8中的透明背景

时间:2014-09-15 07:24:24

标签: ios xcode uiwebview ios8

我正在使用UIWebview,但ios8中的Web视图后面有一些黑色背景。在ios7中工作正常。我也将opaque设置为NO。

3 个答案:

答案 0 :(得分:0)

尝试以编程方式添加UIWebview作为子视图。

    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];

希望这能帮到你!

答案 1 :(得分:0)

我也面临同样的问题,在没有得到适当的解决方案后,我使用Masking做了一个技巧。

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

这对我有用。希望对您有所帮助。

答案 2 :(得分:-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];