UIWebView 缩放不超过 x2

发布于 2024-12-18 18:30:39 字数 1848 浏览 1 评论 0原文

在 UIWebView 中缩放有很多问题,但我找不到答案。

我有 ViewController 和 WebView。我将一个 SVG 文件加载到此 WebView 中,并且我想通过点击它来放大。代码如下:

@interface ViewController : UIViewController <UIGestureRecognizerDelegate>
{
    IBOutlet MyWebView *webView;
    UITapGestureRecognizer *doubleTapRecognizer;
    CGFloat k;
}

...

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

[webView loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"map" withExtension:@"svg"]]];
webView.scalesPageToFit = YES;

webView.scrollView.maximumZoomScale = 512;
webView.scrollView.minimumZoomScale = 0.1;

doubleTapRecognizer.numberOfTapsRequired = 2;
doubleTapRecognizer.numberOfTouchesRequired = 1;

doubleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTap:)];
doubleTapRecognizer.delegate = self;
doubleTapRecognizer.enabled = YES;
[webView addGestureRecognizer:doubleTapRecognizer];

k = 1;
}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    return YES;
}

- (void)doubleTap:(UITapGestureRecognizer*)sender
{
    if (sender.state == UIGestureRecognizerStateEnded)
    {
        k = 10;
// No one does not work correctly
        [webView.scrollView setZoomScale:k animated:YES];
//      [webView setContentScaleFactor:k];
//      [webView.scrollView setContentScaleFactor:k];
//      webView.scrollView.zoomScale = k;
//      [webView.scrollView zoomToRect:CGRectMake(webView.bounds.origin.x, webView.bounds.origin.y, webView.bounds.size.width/k,  webView.bounds.size.height/k) animated:YES];
    }
}

现在 WebView 通过点击放大,但只能放大 2 倍,不再放大。出了什么问题,我怎样才能将其放大 10 倍?

There are a lot of questions with zooming in UIWebView, but I could not find an answer to mine.

I've got ViewController with WebView. I load an SVG-file into this WebView, and I want to zoom in by tapping on it. Here is the code:

@interface ViewController : UIViewController <UIGestureRecognizerDelegate>
{
    IBOutlet MyWebView *webView;
    UITapGestureRecognizer *doubleTapRecognizer;
    CGFloat k;
}

...

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

[webView loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"map" withExtension:@"svg"]]];
webView.scalesPageToFit = YES;

webView.scrollView.maximumZoomScale = 512;
webView.scrollView.minimumZoomScale = 0.1;

doubleTapRecognizer.numberOfTapsRequired = 2;
doubleTapRecognizer.numberOfTouchesRequired = 1;

doubleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTap:)];
doubleTapRecognizer.delegate = self;
doubleTapRecognizer.enabled = YES;
[webView addGestureRecognizer:doubleTapRecognizer];

k = 1;
}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    return YES;
}

- (void)doubleTap:(UITapGestureRecognizer*)sender
{
    if (sender.state == UIGestureRecognizerStateEnded)
    {
        k = 10;
// No one does not work correctly
        [webView.scrollView setZoomScale:k animated:YES];
//      [webView setContentScaleFactor:k];
//      [webView.scrollView setContentScaleFactor:k];
//      webView.scrollView.zoomScale = k;
//      [webView.scrollView zoomToRect:CGRectMake(webView.bounds.origin.x, webView.bounds.origin.y, webView.bounds.size.width/k,  webView.bounds.size.height/k) animated:YES];
    }
}

Now WebView is zooming in by the tap, but only x2 and no more. What is wrong and how could I zoom it x10?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凌乱心跳 2024-12-25 18:30:39

你试过捏吗?

这并不是因为您将最大缩放设置为 512 或 10,点击两次就会缩放到该级别,这意味着点击网页视图中的一个小元素,这将放大以填充网页的可用空间视图,无论缩放值如何,直到最大缩放值。

因此,看起来占据一半屏幕的东西将使缩放变为 2 倍,越小则越大。

Have you tried pinching ?

It's not because you've set the max zoom to be 512 or 10 that tapping twice will zoom to that level, what it means is tapping onto a small element in the web view, this will zoom in to fill the available space of the web view, regardless of the zoom value, up until the max zoom value.

So something appearing to occupy half the screen will make the zoom be x2, smaller would be more.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文