2010-03-18 4 views
3

J'ai un problème avec UIWebView. Je voudrais y afficher mon propre code html. Quand j'ajoute un webview comme sous-vue et que je mets du code html, ça rend très bien. Quand il descend à un dessin optimisé de la cellule tableview avec la méthode drawRect, le problème apparaît. Le dessin des descendants d'UIView fonctionne plutôt bien de cette façon. Il est même possible de charger une URL avec la méthode loadRequest, de définir le délégué, de se conformer au protocole UIWebViewDelegate et de redessiner la cellule du tableau avec setNeedsDisplay lorsque webViewDidFinishLoad est appelé. Cela se voit, mais quand il s'agit de loadHTMLString, rien n'apparaît, seulement un rectangle blanc. Pour des raisons de performances, je dois faire le dessin dans la méthode drawRect.Rendu d'un UIWebView dans drawRect avec loadHTMLString

Des idées? Merci à l'avance Nick

Exemple d'extrait de code pour le code html étant chargé par un UIWebView:

NSString *html = @"<html><head><title>My fancy webview</title></head><body style='background-color:green;'><p>It somehow seems<h2 style='color:black;'>this does not show up in drawRect</h2>!</p></body></html>"; 
[webView loadHTMLString:html baseURL:nil]; 

Snippet pour la méthode drawRect:

- (void)drawRect:(CGRect)aRect { 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    [[webView layer] renderInContext:context]; 
} 
+0

Vous pouvez peut-être afficher la vue Web dans le contexte graphique d'une image, conserver cette image et l'ajouter à la hiérarchie de vue de la cellule Vue de la table ou la dessiner dans drawRect en fonction de vos besoins. – Heiberg

Répondre

0

Je pense que vous devez relaod la cellule à cet index plutôt que d'appeler setNeedsDisplay.

+0

L'avez vous essayé? –

+0

appelle plutôt [super drawRect: aRect]; . –