Як зробити прозорий 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.