9

私はこの質問に対する答えを求めて、この 1 週間ずっと探していました。

UIScrollView 内に UIWebView があります。すべてがうまく機能しますが、向きが変わったときに UIWebView のコンテンツがズームをリセットするようにします。

UIWebView 内の HTML で、ビューポートの幅 (メタ タグ付き) を「device-width」に設定し、Obj-C 側で scalesPagesToFit = YES; を設定します。

javascriptでズームをリセットしようとしました。実行時にメタ タグを置き換える。リロード; UIWebView 内の UIScrollView にアクセスします。等...

しかし、成功しませんでした。

あなたの神々は回避策を知っていますか?

私が考えられる唯一の方法は、方向を変更するたびに UIWebViews を再作成することですが、コンテンツのレンダリング中に UIWebViews が白く点滅し、ひどく見えます:(

何かご意見は?

どうもありがとう、アンドレ

4

5 に答える 5

8

私はここで推測しているだけで、試していませんが、私の知る限り UIWebView には UIScrollView の子があります。したがって、次のことができるはずです。

for (UIScrollView *scroll in [myWebView subviews]) {
    // Make sure it really is a scroll view and reset the zoom scale.
    if ([scroll respondsToSelector:@selector(setZoomScale:)])
        [scroll setZoomScale:1.0];
}
于 2010-09-03T11:17:44.120 に答える
3

iOS 5 以降では、scrollView にアクセスできます。ただ行う:

[webView.scrollView setZoomScale:1.0];

于 2013-03-14T15:45:55.633 に答える
1

更新: 使用時にダウンスケーリングが正しく機能していませんでした

[[[webView subviews] lastObject] setZoomScale:0.25];

ページ上で縮小されている画像の品質はひどいものでした。やっている:

[[[webView subviews] lastObject] setZoomScale:0.25 animated:YES];

修正しました。したがって、最後の行は使用できるものです。

webView は、一部の IB ファイルにある UIWebView のサブクラス化されました。ビューポートはまったく使用しませんでした。Cocoa Touch 側からこれを行うか、JS を使用するかのいずれかを選択する必要があることがわかりました。

私が使用した:

webView.scalesPageToFit = YES;

scalesPageToFit をリセットする方法があるのだろうか。

于 2011-06-29T17:41:47.073 に答える
1

プログラムで実行したい場合、これが私が見つけた唯一の方法です:(必要に応じて独自のサイズを指定してください。フォームフィールドに入力した後にズームアウトしようとしていました)

UIScrollView *sv = [[webViewView subviews] objectAtIndex:0];
[sv zoomToRect:CGRectMake(0, 0, sv.contentSize.width, sv.contentSize.height) animated:YES];
于 2011-03-16T20:06:09.123 に答える
0

Captnwalker1の答えから適応して、私はこれを思いつきました:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    if(toInterfaceOrientation ==UIInterfaceOrientationPortrait||toInterfaceOrientation==UIInterfaceOrientationMaskPortraitUpsideDown)
    {
        currentScrollView = [[webView subviews] objectAtIndex:0];
        [currentScrollView zoomToRect:CGRectMake(0, 0, currentScrollView.contentSize.width, currentScrollView.contentSize.height) animated:NO];
    }
    else
    {
        currentScrollView = [[webView subviews] objectAtIndex:0];
        [currentScrollView zoomToRect:CGRectMake(0, 0, currentScrollView.contentSize.width, currentScrollView.contentSize.height) animated:NO];
    }
}

したがって、webview 画像をロードすると、回転時に画像のサイズがリセットされます。

于 2015-04-29T13:40:25.043 に答える