UIWebView缩放的非动画更改使内容模糊

时间:2013-12-09 11:25:04

标签: ios objective-c uiwebview zoom

我正在UIWebView中加载HTML文本。页面正在加载完美,默认缩放等于1.0。 UIWebView的scalesPageToFit属性设置为YES,因此可以使用捏合手势放大/缩小页面。 我想要做的是将初始webView的内容缩放设置为2.0。

我试过这段代码:

webView.scrollView.zoomScale = 2.0;

但内容显得模糊,只要我用手势开始缩放,网页视图就会重新渲染内容而不会出现模糊。

FYI,二传手的动画版本:

[webView.scrollView setZoomScale:2.0 animated:YES];

正确显示内容文字,正确缩放且不模糊,但我不想为缩放的更改设置动画

2 个答案:

答案 0 :(得分:0)

如果您不想看动画,可以为动画时间指定零。下面的代码可以帮助您。

[UIView animateWithDuration:0.0 animations:^{
            webView.scrollView.zoomScale = 2.0;;
        }completion:^(BOOL finished) {
            //...
        }];

另一个建议是使用 CGAffineTransformMakeScale 方法来扩展webview。

webView.transform = CGAffineTransformMakeScale(2, 2);

答案 1 :(得分:0)

我不知道添加动画可以消除模糊效果,所以感谢您的帖子,这很有帮助。

我搜索的是您的相同解决方案,但不幸的是, ondermerol 的答案对我不起作用。

我使用UIScrollView的委托来解决这个问题 - >的 UIScrollViewDelegate

1)在班级中添加BOOL属性

@property (nonatomic) BOOL webViewWasForceZooming;

2) viewDidLoad 中,连接您的委托并设置BOOL值

self.webView.scrollView.delegate = self;
self.webViewWasForceScrolling = NO;

3)设置新比例

self.webView.hidden = YES;
webViewWasForceZooming = YES;
[self.webView.scrollView setZoomScale:2.0 animated:YES];

4)缩放后显示webview

  #pragma mark - UIScrollViewDelegate

    - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale
    {
        if (webViewWasForceZooming) {
            webViewWasForceZooming = NO;
            self.webView.hidden = NO;
        }
    }

我的解决方案并不完美,因为动画持续时间不为空,但是在加载webview后更改缩放,这很不错。

希望它会对某人有所帮助。