2010-09-05 4 views
111

У меня есть приложение с UITableView и соответствующее подробное представление для каждой строки. В подробном представлении мне нужно отобразить текст и фоновое изображение (текст для каждой строки отличается, но изображение остается тем же). Самый простой способ, на мой взгляд, состоит в том, чтобы поместить текст в файл .rtf и отобразить его в UIWebView. Затем просто положите UIImageView за UIWebView.Как сделать прозрачный UIWebView

Я попытался установить непрозрачность UIWebView в ноль в IB, но это не помогло.

Вы можете мне помочь?

ответ

293

Я рекомендую:

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

(установку этих свойств в Interface Builder будет работать для прошивки 5.0+, но для прошивки 4.3 необходимо установить BackgroundColor в коде)

И включить это в ваш HTML код:

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

Работы IOS, 5. По крайней мере, в имитаторе. –

+3

не работает для меня в iOS 5 –

+1

Мне удалось установить прозрачность и backgroundColor в IB. Для меня тегом стиля было то, что удерживало это от работы. – devinfoley

21

Используйте рекурсивный метод ниже, чтобы удалить градиент от UIWebView:

[webView setBackgroundColor:[UIColor clearColor]]; 
[self hideGradientBackground:webView]; 


- (void) hideGradientBackground:(UIView*)theView 
{ 
    for (UIView * subview in theView.subviews) 
    { 
    if ([subview isKindOfClass:[UIImageView class]]) 
     subview.hidden = YES; 

    [self hideGradientBackground:subview]; 
    } 
} 
+0

работает для меня в симуляторе.Еще не тестировали устройство. – zumzum

+1

Он тоже будет работать на устройстве !!!! –

+0

не забыли написать webView.opaque = NO; –

0

Чтобы удалить свитки и сделать UIWebView прозрачным, попробуйте этот код ниже:

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

for(UIView *view in webView.subviews){  
     if ([view isKindOfClass:[UIImageView class]]) { 
          // to transparent  
          [view removeFromSuperview]; 
     } 
     if ([view isKindOfClass:[UIScrollView class]]) { 
          UIScrollView *sView = (UIScrollView *)view; 
          //to hide Scroller bar 
          sView.showsVerticalScrollIndicator = NO; 
      sView.showsHorizontalScrollIndicator = NO; 
          for (UIView* shadowView in [sView subviews]){ 
               //to remove shadow 
               if ([shadowView isKindOfClass:[UIImageView class]]) { 
                    [shadowView setHidden:TRUE]; 
               } 
          } 
     } 
} 
2

Я был в состоянии сделать свой UIWebView прозрачным, перейдя в «Attributes Inspector» и отключив Drawing непрозрачным.

Мой HTML-код для справки.

UIWebView* webView =(UIWebView *) [cell viewWithTag:100]; 
    NSString* htmlContentString = [NSString stringWithFormat: 
            @"<html>" 
            "<style type='text/css'>html,body {margin: 0;padding: 0;width: 100%%;height: 100%%;}</style>" 
            "<body>" 
            "<table style='border:1px solid gray; border-radius: 5px; overflow: hidden;color:white;font-size:10pt' cellspacing=\"0\" cellpadding=\"1\" align='right'><tr>" 
            "<td>Hello</td><td>There</td>" 
            "</tr></table>" 
            "</body></html>" 
            ]; 
    [webView loadHTMLString:htmlContentString baseURL:nil]; 
7

Swift обновление:

webView.opaque = true 
webView.backgroundColor = UIColor.clearColor() 

И опять же, не забудьте установить

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

Или еще лучше, вместо встроенного стиля, в таблице стилей:

body { 
    background-color: transparent 
} 
+1

Мне не нужно было устанавливать стиль тела. Но мне пришлось установить цвет фона и непрозрачность кода. – Andrej

4

В XCode 6.x снимите отметку Opaque и изменение Прозрачность фона до 0%. Я думаю, что другие версии XCode также будут работать. enter image description here

4

Для Swift 3 и Xcode 8

self.webView.isOpaque = false; 
self.webView.backgroundColor = UIColor.clear 
Смежные вопросы