Je chargement de contenu dans un UIWebView avec l'appel suivant:documents UIWebView reste hauteur du contenu le plus haut
NSString *detailHtmlString = [NSString stringWithFormat:@"<html><head><style>body {background: black;color: white;line-height: 1.4em; font-family: sans-serif; margin: 0; padding: 0 0 30px 0;width: 280px;} p {margin-top: 10px;}</style></head><body id=\"content\">%@</body></html>",[currentWeek objectForKey:@"post_content"]];
[weekDetailController.movie_detail loadHTMLString:detailHtmlString baseURL:nil];
Puis, après qu'il se termine le chargement:
- (void) webViewDidFinishLoad:(UIWebView *)sender {
[self performSelector:@selector(calculateWebViewSize) withObject:nil afterDelay:0.1];
}
- (void) calculateWebViewSize {
[weekDetailController.movie_detail sizeToFit];
float newHeight = [[weekDetailController.movie_detail stringByEvaluatingJavaScriptFromString :@"document.getElementById(\"content\").offsetHeight"] floatValue];
newHeight += 300; //height of the other elements
NSLog(@"Height: %f",newHeight);
CGRect frame = weekDetailController.movie_detail.frame;
NSLog(@"Height was: %f",frame.size.height);
frame.size.height = newHeight;
weekDetailController.movie_detail.frame = frame;
[scrollView.scrollView setContentOffset:CGPointZero];
[scrollView.scrollView setContentSize:CGSizeMake(frame.size.width, frame.size.height)];
}
Cela fonctionne très bien la première lorsque la vue est chargée, mais sur les vues suivantes, lorsque le contenu différent a été chargé dans UIWebView (en utilisant le même appel que ci-dessus), l'appel JavaScript pour obtenir la hauteur renvoie des valeurs de plus en plus grandes, même si le contenu est plus petit. il renvoie toujours la hauteur de la plus grande quantité de contenu avait été dans la vue à un moment donné. J'ai essayé de charger une chaîne HTML vide dans la vue pour la "nettoyer", mais cela ne semble pas aider non plus.
Des indices seraient appréciés!
Uhmm ... Vous ne réinitialisez pas newHeight dans le code ci-dessus, en ajoutant simplement 300 sur chaque appel ... – Altealice
whoops - est allé par-dessus bord lors de la suppression du code commenté et a supprimé une ligne (non commentée) qui définit newHeight - le message original a été modifié –