いくつかのラベルを含むView Controllerと、それにいくつかのhtmlをロードしているUIWebViewがあります。これらすべてのラベルと UIWebView は、UIScrollView のサブビューです。UIWebView のスクロールを無効にしたので、ラベルと UIWebView は UIScrollView 内で一緒にスクロールします。
次に、UiWebView 内のコンテンツのサイズを見つけ、コンテンツのサイズに応じて UIWebView のサイズを変更し、スクロール ビューのサイズを webview のサイズに設定しました。これは、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;
NSLog を使用して webview のコンテンツのサイズを確認していると、同じコンテンツの高さが異なることに気付きました。たとえば、View Controller を初めて開いた場合、高さは 915.0 と表示され、ナビゲーションに戻ってこの View Controller に戻ると、ログにはサイズが 1012.0 と表示されます。
htmlコンテンツに画像が読み込まれていることが原因である可能性があります。初めて正しい高さを表示するように修正するにはどうすればよいですか?ありがとう!
更新: javascriptを使用して別の戦略を使用する場合、次のコードを使用して既に試しました:
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;
このコードは、ログで毎回適切な高さを提供しますが、これはまさに私が望むものですが、webview 全体が少し上に移動し、その上のすべてのラベルがブロックされます。私は何か間違ったことをしていますか、それを修正する方法はありますか? ありがとう!