UIWebView não carregar completamente, altura varia
Eu tenho um controlador de exibição contendo alguns rótulos e um UIWebView que está carregando alguns html nele. Todos esses rótulos e UIWebView são subvisualizações de um UIScrollView. Desativei a rolagem do UIWebView para que os rótulos e o UIWebView rolem todos juntos dentro do UIScrollView.
Então eu encontrei o tamanho do conteúdo dentro do UiWebView, alterei o tamanho do UIWebView de acordo com o tamanho do conteúdo e, em seguida, configurei o tamanho da visualização de rolagem para o tamanho da visualização da web. Isto é como eu fiz isso adicionando o seguinte código no webViewDidFinishLoad:
CGRect frame = myWebView.frame;
frame.size.height = 1;
myWebView.frame = frame;
CGSize fittingSize = [myWebView sizeThatFits:CGSizeZero];
frame.size = fittingSize;
myWebView.frame = frame;
NSLog(@"size: %f, %f", fittingSize.width, fittingSize.height);
mainScrollView.contentSize = myWebView.bounds.size;
Como eu estou usando o NSLog para ver o tamanho do conteúdo do webview, notei que ele dá uma altura diferente para o mesmo conteúdo. Por exemplo, se eu abrir o controlador de exibição pela primeira vez, ele mostrará a altura igual a 915.0 e quando eu voltar na navegação e voltar a esse controlador de exibição, o log mostrará o tamanho como 1012.0.
Eu acredito que pode ser devido às imagens carregando no conteúdo html. Alguém pode dizer como posso corrigi-lo para mostrar a altura certa na primeira vez? Obrigado!
ATUALIZAR: Se eu usar uma estratégia diferente usando javascript, eu já tentei usar o seguinte código:
CGRect oldBounds = [[self myWebView] bounds];
CGFloat height = [[myWebView stringByEvaluatingJavaScriptFromString:@"document.height"] floatValue];
NSLog(@"NEW HEIGHT %f", height);
[myWebView setBounds:CGRectMake(oldBounds.origin.x, oldBounds.origin.y, oldBounds.size.width, height)];
mainScrollView.contentSize = myWebView.bounds.size;
Este código me dá a altura certa toda vez no log que é exatamente o que eu quero, mas toda a webview é deslocada um pouco para cima, bloqueando todos os rótulos acima dela. Estou fazendo algo errado e como consertar isso? Obrigado!