时间:2010-07-23 16:11:42

标签: iphone uiwebview uiscrollview zoom reset

5 个答案:

答案 0 :(得分:8)

我只是猜测这里并没有尝试,但AFAIK 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];
}

答案 1 :(得分:3)

在iOS 5+上,您可以访问scrollView。 只是做:

[webView.scrollView setZoomScale:1.0];

答案 2 :(得分:1)

如果您想以编程方式执行此操作,这是我能找到完成它的唯一方法:(如果您愿意,请指定您自己的尺寸,我在输入表单字段后尝试缩小)

UIScrollView *sv = [[webViewView subviews] objectAtIndex:0];
[sv zoomToRect:CGRectMake(0, 0, sv.contentSize.width, sv.contentSize.height) animated:YES];

答案 3 :(得分:1)

更新: 使用

时缩小尺寸无法正常工作
[[[webView subviews] lastObject] setZoomScale:0.25];

在页面上缩小尺寸的图像质量非常糟糕。这样做的:

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

修正了它。所以最后一行是你可以使用的。

webView是UIWebView的子类,它位于某个IB文件中。我根本没有使用Viewport。我发现应该选择从Cocoa Touch端执行此操作或使用JS。

我用过:

webView.scalesPageToFit = YES;

我想知道是否有办法重置scalesPageToFit。

答案 4 :(得分: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];
    }
}

因此,请加载您的网页视图图片,图片会在旋转时重置其大小。