8

UIWebView内にいくつかのボタンとラベルを追加する必要がありますUIScrollViewUIWebView内部に追加する方法について多くの質問を見てきましUIScrollViewたが、残念ながら、それらは私のタスクを完了するのに役立ちませんでした. そのため、重複などのマークを付けないでください。

理論的には、この問題は次の手順で解決できます。

1)UIWebViewのサブビューを作成しUIScrollViewます。

2) setScrollEnabled:NOforを呼び出してUIWebView、ネイティブ スクロールを無効にします。

UIScrollView3)との両方のコンテンツ サイズを、UIWebView内にロードされた HTML 文字列のサイズに設定しますUIWebview

iOS 6 と StoryBoards を使用しています。UIWebViewのサブビューとして追加しましたUIScrollView

それから私の中でwebViewDidFinishLoad、私は以下を使用しました:

 NSString *webHeight = [webView stringByEvaluatingJavaScriptFromString:@"document.height;"];
 NSLog(@"WebView Height %@", webHeight);

それは私に WebView の高さを与えます。

StackOverFlow で、次のことに遭遇しました。

    CGRect frame = webView.frame;
    frame.size.height = 1;
    webView.frame = frame;
    CGSize fittingSize = [webView sizeThatFits:CGSizeZero];
    frame.size = fittingSize;
    webView.frame = frame;

    NSLog(@"size: %f, %f", fittingSize.width, fittingSize.height);

次に、のサイズをサイズに設定しUISCrollViewましたUIWebView

mainScrollView.contentSize = webView.bounds.size;

一番下までスクロールできますが、一番下に空白がありUIWebView、読み込まれた html コンテンツのサイズに合わせてサイズを調整していません。

ここに画像の説明を入力

UIScrollViewのコンテンツのサイズにサイズを変更したように見えますが、すべてが表示されていませんUIWebViewUIWebViewこの問題を解決するにはどうすればよいですか?

UIWebView内部で使用してはならないという Apple のドキュメントについてアドバイスしないでくださいUIScrollView。私はすでにそれを知っていますが、プロジェクトの要件に従って使用したいと考えています。

4

3 に答える 3

2

ここで光を当てることができると思います。フレームサイズとコンテンツサイズを混同していると思います。最初に方法論を説明し、次に具体的な提案をします。

方法論

webView があり、そのスクロールを正しく無効にし、contentSize を Web コンテンツのフル サイズに設定しました。また、フレーム サイズを Web コンテンツのフル サイズに設定する必要があります。次に、Subview this を原点 (0,0) の scrollView に追加します。scrollView の contentSize を Web コンテンツのフル サイズに設定します。scrollView フレームを viewController.view の境界に設定します。

具体的な提案

  • あなたが投稿した「fittingSize」コードは、私には正しく見えません。そのコードの目的は、webView のフレームを設定することです。NSLog またはブレークポイントを使用して、Web コンテンツのフル サイズが設定されているかどうかを確認します。
  • 投稿したjavascriptコードの目的は、投稿した「fittingSize」コードと同じであることに注意してください。どちらが正しい出力を生成するかを確認してください。
  • デバッグに役立つように、webView と scrollView のフレーム サイズを把握してみてください。これを行う最善の方法は、次のようにさまざまな背景色を設定することです。setBackgroundColor:[UIColor redColor]
  • 私の最善の推測は、webView.frame.sizeが十分に大きく設定されていないということです。
于 2013-02-17T06:50:12.870 に答える
2

Jessica が述べたように、webView がフレーム サイズの変更を反映しないという同じ状況が見つかりました。下にスクロールすると空白が残ります。プロジェクトをチェックしたところ、autoLayout 機能が有効になっていることがわかったので、見つけた解決策は次のとおりです。

  1. 自動レイアウトを無効にします。
  2. 次のようなコードを使用して、webView フレーム サイズを変更した後、高さの制約を webView に追加します。

    self.webViewHeightConstraint.constant = フィッティングサイズ.高さ; [webView updateConstraints];

于 2014-05-29T08:11:18.870 に答える
0

UIWebView のコンテンツの高さを取得するには、ここで「現象」による回答を強くお勧めします: http://stackoverflow.com (受け入れられた回答ではありません。以下の回答です)。より良い解決策。

于 2015-01-14T14:12:51.797 に答える