0

ここで説明するように、EGO Pull and Refreshコードを使用して、「Pulldowntorefresh」機能をに実装していUIWebViewます。webViewをズームするまでは、すべて正常に機能します。

子を追加するwebView.scrollViewと、うまくスクロールしますが、webViewがズームしたときにサイズが変更されません。それは完全に同じサイズのままです。autoresizeMaskFlexibleWidthに設定した場合、またはautoresizeSubviewsYESに設定した場合。

編集:

言い換えれば、私の質問は次のとおりです。WebViewコンテンツのズームがOKなのに、自分のビューが同じ場所(でUIWebView)に追加されないのはなぜですか?また、なぜスクロールはOKなのに、ズームはできないのですか?

ここに画像の説明を入力してください

4

1 に答える 1

1

これは、意図した動作を実装する方法というよりも、何が起こっているかについての説明です。

スクロール ビューには、本質的にスクロール ビューに含まれるコンテンツの表示ウィンドウであるフレームがあります。サブビューをスクロールビューに追加すると、ビューはスクロールビューのコンテンツビューに「追加」されます (実装は不明です)。これは通常、スクロールビューのフレームよりも大きくなります。スクロール ビューのコンテンツ オフセットは、スクロール ビューのフレームのサイズと組み合わされて、コンテンツ ビューのどの部分が表示されるかを決定します。Web ビューをズームすると、コンテンツ ビューのサイズが変化しますが、コンテンツ ビューが真の UIView ではないか、スクロール ビューが何らかの形でサブビューのサイズ変更をブロックしているため、EGO ビューにはサイズ変更メッセージが表示されません。実装を推測します)。

次の提案よりも簡単な方法があるかもしれません。

Web ビューを扱っておらず、スクロール ビューのみを扱っている場合は、UIScrollView をサブクラス化し、setContentSize をオーバーライドして、EGO ビューのサイズを手動で変更できます。ただし、Web ビュー内のスクロール ビューを単に交換することはできないため、メソッド スウィズリングを使用して、Web ビューのスクロール ビューの setContentSize メソッドの実装を交換することを検討してください。

しかし、もし私があなただったら、そもそも EGO ビューのサイズを変更したい理由について考えます。これは Web ビューのコンテンツの一部ではありませんが、ユーザーがそのコンテンツを変更するために実行できるアクションです。また、Web ビューのコンテンツと、ユーザーが最初にそのサイズを変更できるようにする必要があるかどうかを検討することもできます。標準的なニュース フィードでは、理想的な表示サイズにロックするだけの方がよい場合があります。

編集:

ダイアグラムを表示した後、EGO ビューのサイズを変更するのではなく、常に Web ビューの中央に配置されるように位置を変更する必要があるように見えます。これを行う最も安全な方法は、Web ビューのスクロール ビューのデリゲートになり、元のデリゲートが何であれ ((ある程度) 実装に依存しないように) 追跡し、すべてのプロトコル メソッドを元のデリゲートに転送することです。次に、scrollViewDidScroll メソッド (または scrollViewDidZoom など、必要なものは何でも) で、EGO フレームの origin.x を contentOffset.x に設定できます。

于 2012-05-26T00:22:10.490 に答える