J'utilise un UIWebView
pour afficher un écran «À propos de» en affichant un file HTML fourni. La hiérarchie de vue de mon application est: UITabBarController
/ UIViewController
/ UIWebView
.
Le problème est que la page HTML a un fond sombre, et la toute première fois que l'onglet est tapé, un arrière-plan blanc est visible brièvement avant que la vue Web est affichée. J'ai essayé de définir la couleur de fond de l' UIWebView
, mais cela ne résout pas le problème. Le problème se produit si je charge le contenu dans viewDidLoad
ou viewWillAppear
.
webView.opaque = NO; webView.backgroundColor = [UIColor clearColor];
// charger 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]];
Ajoutez ceci pour déléguer après le chargement
// flicker fix - (void)webViewDidFinishLoad:(UIWebView *)webView { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.30]; self.webview.alpha = 1; [UIView commitAnimations]; }
J'ai également rencontré le même problème, la solution que j'ai trouvée est la suivante.
– (void) viewDidLoad {[super viewDidLoad];
[_webView setOpaque:NO]; _webView.backgroundColor = [UIColor clearColor]; self.webView.hidden = YES;
}
– (void) webViewDidFinishLoad: (UIWebView *) webView {
//........................... self.webView.hidden = NO;
}