调整UIWebView大小时,抗锯齿功能无效

时间:2009-02-23 15:39:58

标签: iphone uiwebview antialiasing

我想以60%的比例向我的应用添加Web视图(就像在浏览其他窗口视图中的Safari中看到的那样):

alt text

注意内容看起来好看并且别名!

如果我尝试将相同的Web视图添加到我的应用程序:

NSURL *url = [NSURL URLWithString:@"http://www.google.co.uk?q=hello"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];

UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 400)];
webView.delegate=self;
[webView loadRequest:request];  
[self.view addSubview:webView];

使用以下转换:

[webView setTransform:CGAffineTransformMakeScale(0.6, 0.6)];

alt text

..比例非常糟糕,似乎没有抗锯齿。

有谁知道为什么会这样,或者有关于如何修复它的建议?

谢谢! 尼克。

3 个答案:

答案 0 :(得分:3)

我想出了一个解决方案!

拍摄网页视图的快照,将其添加到UIImageView并调整其大小!

UIGraphicsBeginImageContext(webView.bounds.size);
[webView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

UIImageView * imageView = [[UIImageView alloc] initWithFrame:CGRectMake(webView.bounds.x, webView.bounds.y, webView.frame.size.width, webView.size.height)];
imageView.image = viewImage;
[self addSubview:imageView];
[imageView release];

webView.hidden = YES;

似乎工作正常!

需要注意的一点是..如果你想在加载WebView后立即执行此操作,则需要将操作推迟一段时间(我选择了10秒钟!)

像这样:

-(void)deferLoading
{
    webViewHasActuallyLoaded = YES;
    [self setNeedsLayout];
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    [NSTimer scheduledTimerWithTimeInterval: 1.0/10.0 target:self selector:@selector(deferLoading) userInfo:nil repeats:NO];
}

为上面的建议干杯! 尼克。

答案 1 :(得分:0)

为什么不让网页视图更小?它应该以较小的尺寸呈现高质量的内容。

如果您需要为尺寸更改设置动画,可以在网页视图的图层上设置minificationFilter以获得合理的质量:

[[webView layer] setMinificationFilter:kCAFilterLinear];

答案 2 :(得分:0)

在你的UIViewController覆盖

  • (void)placeViewItems:(UIInterfaceOrientation)interfaceOrientation

制作你的UIWebView的frame.origin.x& frame.origin.y整数值。 看看这是否是您正在寻找的结果。