Фон UIWebView встановлений на Clear Color, але він не прозорий


140

Я розробляю додаток для iOS 4, використовуючи останню версію iOS SDK та XCode 4.2.

У мене є XIB з мікросхемою UIWebViewз альфа = 1,0 , фон набір для Clear Color і Opaque не встановлено. На цьому 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 - сірим.

Якась підказка?


спробуйте просто поставити UIImageView на свій веб-перегляд у програмі для створення інтерфейсів і встановити йому ваше зображення.
Стас

Дякуємо за вашу відповідь, але веб-перегляд не заповнює весь екран.
VansFannel

Відповіді:


360

Також встановити:

[webView setBackgroundColor:[UIColor clearColor]];
[webView setOpaque:NO];

3
Це працює лише для мене, якщо я встановив колір тла і непрозорість після виклику loadHTMLString. Здається, що loadHTMLString скидає обидва ці значення.
Джастін Андерсон

1
Я знаю, що питання стосувалося iOS, але якщо для OSX, це питання і відповідь вирішує проблему, а також може допомогти тим, хто має iOS.
Воломійка

Це рішення все ще працює в iOS 12.1, Xcode 10.1 та Swift.
Bhavin_m

15
     /*for ios please set this*/

     [webViewFirst setOpaque:NO];

     /*for html please set this*/
     <body style="background:none">

9

Крім того, щоб встановити фон вашого веб-перегляду прозорим кольором, також переконайтеся, що ви встановили непрозорий значення false.


Дякуємо за Вашу відповідь, але непрозорість не встановлена ​​на Interface Builder.
VansFannel

Спробуйте встановити його після виклику [super viewDidLoad: анімація]; .
Елегія

Привіт, у мене той самий випуск .. працює на ios5, але сірий фон на ios4. Як ти це вирішив?
користувач542584


3

Ви можете спробувати цей код (я знаю, що він небезпечний, але він працює навіть для ios5):

- (void)makeBodyBackgroundTransparent {
        for (UIView *subview in [webView subviews]) {
            [subview setOpaque:NO];
            [subview setBackgroundColor:[UIColor clearColor]];
        }
        [webView setOpaque:NO];
        [webView setBackgroundColor:[UIColor clearColor]];
}


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

1

Для об'єктивного

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

Будь ласка, не забудьте включити це у свій HTML-код:

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

або

 <body style="background:none">

0

Остання версія Swift (за потреби):

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

Видаліть рядок делегата, якщо це не потрібно

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.