3

私はたくさんの「解決策」を試しましたが、今のところ、UIWebView のスクロールビューのコンテンツ サイズを把握しようとしています。現在、デバイスの幅である 1024 を常に返しています。高さを照会していて、ビューが縦向きであるため、これは意味がありません。

次のコードは、高さを 1024.00000 として報告します。

-(void)webViewDidFinishLoad:(UIWebView *)webView {

  float sourcesWebViewHeight = [[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.scrollHeight"] floatValue];

  NSLog(@"%f", sourcesWebViewHeight);

}

しかし、テキストは数行しかありません。

4

1 に答える 1

12

最終的にこれを解決した理由を説明します。

これでコンテンツをラップする必要がありました。

<html><head><meta name=\"viewport\" content=\"initial-scale=1, user-scalable=no, width=device-width\" /></head><body>%@</body></html>

次のビューを実装するとロードされます。

-(void)webViewDidFinishLoad:(UIWebView *)webView {

  [self layoutSubviews];

  webView.scrollView.scrollEnabled = NO;    // Property available in iOS 5.0 and later
  CGRect frame = webView.frame;


  frame.size.height = 1;        // Set the height to a small one.

  webView.frame = frame;       // Set webView's Frame, forcing the Layout of its embedded scrollView with current Frame's constraints (Width set above).

  frame.size.height = webView.scrollView.contentSize.height;  // Get the corresponding height from the webView's embedded scrollView.

  webView.frame = frame;





}

-(void) layoutSubviews {
  [super layoutSubviews];
  [body stringByEvaluatingJavaScriptFromString:
   [NSString stringWithFormat:
    @"document.querySelector('meta[name=viewport]').setAttribute('content', 'width=%d;', false); ",
    (int)body.frame.size.width]];
}

そして最後に、私の webview はコンテンツに合わせて適切にスケーリングします。

于 2013-01-11T01:30:19.077 に答える