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

问题描述 投票:4回答:3

我想以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

..规模是非常差的质量,似乎没有抗锯齿。

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

谢谢!缺口。

iphone uiwebview antialiasing
3个回答
3
投票

我想出了一个解决方案!

拍摄webview的快照,将其添加到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后立即执行此操作,则需要将操作推迟一段时间(我选择了十分之一秒!)

像这样:

-(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];
}

为上面的建议干杯!缺口。


0
投票

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

如果需要设置大小变化的动画,可以在Web视图的图层上设置minificationFilter以获得合理的质量:

[[webView layer] setMinificationFilter:kCAFilterLinear];

0
投票

在你的UIViewController覆盖中

  • (void)placeViewItems:(UIInterfaceOrientation)interfaceOrientation

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

© www.soinside.com 2019 - 2024. All rights reserved.