Ответ 1
webView.opaque = NO;
webView.backgroundColor = [UIColor clearColor];
Я использую UIWebView
для отображения экрана "О программе", отображая связанный HTML файл. Моя иерархия представлений приложений: UITabBarController
/UIViewController
/UIWebView
.
Проблема заключается в том, что страница HTML имеет темный фон, и в первый раз, когда вкладка нажата, белый фон отображается ненадолго до отображения веб-представления. Я попытался установить цвет фона UIWebView
, но это не решит проблему. Проблема возникает при загрузке содержимого в viewDidLoad
или viewWillAppear
.
webView.opaque = NO;
webView.backgroundColor = [UIColor clearColor];
//load index.html
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"www"]];
self.webview.delegate = self;
self.webview.alpha = 0; // flicker fix
[self.webview loadRequest:[NSURLRequest requestWithURL:url]];
Добавьте это в делегат после загрузки
// flicker fix
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.30];
self.webview.alpha = 1;
[UIView commitAnimations];
}
Я также столкнулся с той же проблемой, решение, которое я нашел, выглядит следующим образом.
-(void)viewDidLoad {
[super viewDidLoad];
[_webView setOpaque:NO];
_webView.backgroundColor = [UIColor clearColor];
self.webView.hidden = YES;
}
-(void)webViewDidFinishLoad:(UIWebView *)webView {
//...........................
self.webView.hidden = NO;
}