Фон UIWebView установлен в Clear Color, но он не прозрачный - PullRequest
139 голосов
/ 29 декабря 2011

Я разрабатываю приложение для iOS 4 с использованием последней версии iOS SDK и XCode 4.2.

У меня есть XIB с UIWebView с Альфа = 1,0 , Фон установлен на Clear Color и Непрозрачный не установлен.На этом XIB я установил изображение в качестве фона с этим кодом:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"AboutBackground.png"]];
        self.view.backgroundColor = background;
        [background release];
    }
    return self;
}

UIWebView показывает статический HTML:

<html><head></head><body style=\"margin:0 auto;text-align:center;background-color: transparent; color:white\">...</body></html>

В симуляторе iOS 5 его фон прозрачен, но на iOS 4 устройство серое.

Любая подсказка?

Ответы [ 8 ]

355 голосов
/ 29 декабря 2011

Также установлено:

[webView setBackgroundColor:[UIColor clearColor]];
[webView setOpaque:NO];
15 голосов
/ 09 декабря 2013
     /*for ios please set this*/

     [webViewFirst setOpaque:NO];

     /*for html please set this*/
     <body style="background:none">
8 голосов
/ 29 декабря 2011

Помимо установки прозрачного цвета фона веб-просмотра, также убедитесь, что для opaque установлено значение false.

3 голосов
/ 04 января 2016
NSString *content=@"example clear background color UIWebview";
NSString *style=[NSString stringwithformat:@"<html><head><style>body {background-color:transparent;}</style></head><body>%@</body></html>",content];
[myWebview loadhtmlstring:style baseurl:nil];
3 голосов
/ 09 октября 2014
webView.opaque = NO;

webView.backgroundColor = [UIColor clearColor];
3 голосов
/ 29 декабря 2011

Вы можете попробовать этот код (я знаю, что это небезопасно, но оно работает даже для ios5):

- (void)makeBodyBackgroundTransparent {
        for (UIView *subview in [webView subviews]) {
            [subview setOpaque:NO];
            [subview setBackgroundColor:[UIColor clearColor]];
        }
        [webView setOpaque:NO];
        [webView setBackgroundColor:[UIColor clearColor]];
}
1 голос
/ 12 марта 2017

Для цели

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

Пожалуйста, не забудьте включить это в свой HTML-код:

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

или

 <body style="background:none">
0 голосов
/ 17 сентября 2018

Последняя версия Swift (по требованию):

lazy var webView: UIWebView = {
    let view = UIWebView()
    view.delegate = self
    view.backgroundColor = .clear
    view.isOpaque = false
    return view
}()

Удалить строку делегата, если не требуется

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...