Question

Je voudrais ajouter une vue Web pour mon application à 60% de l'échelle (comme vu dans Safari dans la navigation d'autres fenêtres voir):

Remarquez comment le contenu est joli et Aliased!

Si je tente et ajouter la même vue Web à mon application:

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

Utilisation de la transformation suivante:

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

.. l'échelle est de qualité vraiment mauvais et il semble pas anti-aliasing.

Quelqu'un sait pourquoi cela se produit ou une suggestion sur la façon dont il pourrait être fixé?

Merci! Nick.

Était-ce utile?

La solution

Je me suis dit une solution!

Prendre un instantané de la WebView, l'ajouter à un UIImageView et redimensionnez que insted!

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;

Il semble fonctionner très bien!

Un point à noter .. si vous voulez le faire dès que le WebView a chargé, vous devez reporter l'action par une certaine période (j'ai choisi un 10e de seconde!)

comme ceci:

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

Vive suggestions abovee! Nick.

Autres conseils

Pourquoi ne pas simplement faire le point de vue web plus petit? Il devrait rendre le contenu de haute qualité à la plus petite taille.

Si vous avez besoin pour animer le changement de taille, vous pouvez régler la minificationFilter sur la couche de vue Web pour obtenir la qualité raisonnable:

[[webView layer] setMinificationFilter:kCAFilterLinear];

Dans votre remplacement UIViewController

  • (void) placeViewItems: (UIInterfaceOrientation) interfaceOrientation

Et faire vos valeurs entières de frame.origin.x de UIWebView & frame.origin.y. Voir si cela est le résultat que vous recherchez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top