9

过去一周我一直在寻找这个问题的答案。

我有一个 UIWebView,在 UIScrollView 内。一切都很好,但我希望 UIWebView 的内容在方向改变时重置其缩放。

在 UIWebView 内的 HTML 中,我将视口的宽度(带有元标记)设置为“设备宽度”,然后在 Obj-C 端,我设置 scalesPagesToFit = YES;

我试过用javascript重置缩放;通过在运行时替换元标记;重新加载;访问 UIWebView 内部的 UIScrollView;ETC...

但没有成功。

有大神知道解决方法吗?

我唯一能想到的就是每次我们改变方向时重新创建 UIWebViews,但这会使它们在渲染内容时闪烁为白色,这看起来很糟糕:(

有什么想法吗?

非常感谢,安德烈

4

5 回答 5

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];
}
于 2010-09-03T11:17:44.120 回答
3

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

[webView.scrollView setZoomScale:1.0];

于 2013-03-14T15:45:55.633 回答
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 回答
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 回答
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 回答