Як зробити прозорий UIWebView


117

У мене є додаток із UITableViewвідповідним переглядом деталей для кожного рядка. У детальному перегляді я повинен відображати текст та фонове зображення (текст різний для кожного рядка, але зображення залишається однаковим). Найпростіший спосіб, на мою думку, - це помістити текст у .rtf-файл і відобразити його в UIWebView. Тоді просто поставити UIImageViewпозаду UIWebView.

Я намагався встановити UIWebViewнепрозорість на нуль у ІБ, але це не допомогло.

Можеш допомогти мені?

Відповіді:


302

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

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

(встановлення цих властивостей у Interface Builder буде працювати для iOS 5.0+, але для iOS 4.3 потрібно встановити backgroundColor у коді )

І включіть це у свій HTML-код:

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

Працює iOS 5. Принаймні в тренажері.
— Джейсон МакКрірі

1
Мені вдалося встановити непрозорість і фоновий колір у IB. Для мене тег стилю був тим, що стримувало це від роботи.
— devinfoley

таким чином працює для 4.2.1, якщо ви пишете ці рядки лише як код. Якщо ви встановите ті самі параметри в програмі для створення ітерації, то прозорий фон не отримаєте
— Gargo

2
<body style="background-color: transparent;">, Здається, необов'язково, принаймні в останніх версіях IOS.
— zeroimpl

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

не забудьте написати webView.opaque = НІ;
— Нілеш Кікані

1
Е, про який "градієнт" ми говоримо тут?
— Грег Малетич

7

Швидке оновлення:

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

І знову, не забудьте встановити

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

Або ще краще, замість вбудованого стилю, у своєму стилі:

body {
     background-color: transparent
}

1
Мені не потрібно було встановлювати стиль тіла. Але мені довелося встановити колір тла та непрозорий у коді.
— Андрій


4

У XCode 6.x зніміть прапорець Opaque та змініть непрозорість фону на 0% . Я думаю, що інші версії XCode також працюватимуть.введіть тут опис зображення


3

Мені вдалося зробити свій UIWebView прозорим, перейшовши на "Інспектор атрибутів" і зніміть прапорці для малювання Opaque.

Мій 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];

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

0

У Swift 4.x,

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