iPhone-Redimensionamiento automático del contenido de UIWebView no se ajusta al marco
Estoy generando un UIWebView en mi método viewDidLoad, con un tamaño pequeño (digamos algo como 50x70). Y luego lo puse en un super UIView.
Me gustaría hacer que su contenido se ajuste al marco de WebView. Para hacer esto, escribí:
oneView = [[UIWebView alloc] initWithFrame:CGRectMake(x, y, W, H)];
oneView.backgroundColor = [UIColor whiteColor];
oneView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
oneView.scalesPageToFit = YES;
oneView.autoresizesSubviews = YES;
[self.view addSubview:oneView];
[oneView loadRequest:/*some request*/];
Pero haciendo esto, la página web no se redimensiona al marco de UIWebView. Parece ser escalado a otra cosa, más pequeño que el marco del superview, y más ancho que el de la webview.
Si establezco la vista web tamaño de fotograma al tamaño de toda la superview, está bien.
¿Cómo puedo forzar el contenido web (contenido www real) para encajar en el marco de la "reducida" UIWebView ?
7 answers
La respuesta es: usted ya está haciendo esto, pero hay límites.
Mira las siguientes capturas de pantalla:
Screeshot 1, scalesPageToFit SÍ y NO
Ambas vistas web tienen el mismo ancho. En la parte inferior la página encaja perfectamente.
Screeshot 2, scalesPageToFit ambos SÍ pero anchos más pequeños establecidos
Ambos webview intentan encajar en la página, pero no lo hará, ya que hay un límite de tamaño.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-23 12:26:37
Para aquellos que se enfrentaron al mismo problema, puede desactivar el desplazamiento nativo de UIWebView mediante
self.webView.scrollView.scrollEnabled = NO;
Y agregue un scrollView
separado que manejará el desplazamiento y el zoom en lugar del desplazamiento nativo de webView
.
Next implement
- (void) webViewDidFinishLoad:(UIWebView *)webView
{
CGRect frame = _webView.frame;
CGSize fittingSize = [_webView sizeThatFits:_webView.scrollView.contentSize];
frame.size = fittingSize;
_webView.frame = frame;
self.scrollView.contentSize = self.webView.scrollView.contentSize;
}
Para establecer el marco webView
adecuado.
Espero que esto ayude a alguien. ¡Buen código!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-09 17:21:46
Prueba esto.Eso funciona para mí.
NSString *strTemplateHTML = [NSString stringWithFormat:@"<html><head><style>img{max-width:100%%;height:auto !important;width:auto !important;};</style></head><body style='margin:0; padding:0;'>%@</body></html>", @"insert your html content here"];
[webView loadHTMLString:strTemplateHTML baseURL:nil];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-12 11:41:15
Puedes hacer lo siguiente:
oneview.contentMode = UIViewContentModeScaleAspectFit;
Eso hará que el contenido de tu vista crezca a medida que tu vista crezca. El contenido crecerá lo más grande posible sin dejar de encajar dentro de UIWebView y sin distorsión.
Hay otras opciones para esta propiedad, y encontrará una explicación bastante buena de las más complicadas, junto con imágenes que muestran el efecto de cada una, en Ver Guía de programación para iOS
Tenga en cuenta que la máscara de autoresizing que establece hará que la vista en sí crezca solo cuando su superview crezca. Si yo.la vista ya es grande cuando se crea el pequeño UIWebView y auto.la vista no crece, el UIWebView no crecerá. Probablemente seas consciente de esto, pero lo estoy agregando por si acaso, ya que no podemos vernos a nosotros mismos.marco de la vista en este fragmento de código.
Espero que esto sea útil.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-23 12:16:08
Para Swift 2.2 He logrado lo mismo con
//Document file url
var docUrl = NSURL(string: "https://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwjjwPSnoKfNAhXFRo8KHf6ACGYQFggbMAA&url=http%3A%2F%2Fwww.snee.com%2Fxml%2Fxslt%2Fsample.doc&usg=AFQjCNGG4FxPqcT8RXiIRHcLTu0yYDErdQ&sig2=ejeAlBgIZG5B6W-tS1VrQA&bvm=bv.124272578,d.c2I&cad=rja")
let req = NSURLRequest(URL: docUrl!)
webView.delegate = self
//here is the sole part
webView.scalesPageToFit = true
webView.contentMode = .ScaleAspectFit
webView.loadRequest(req)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-14 12:27:46
Para Swift 3, he logrado lo mismo con
DispatchQueue.main.async {
if let finalURL = URL(string: urlString) {
let request = URLRequest(url: finalURL)
// self.webView.sizeToFit()
self.webView.scalesPageToFit = true
self.webView.contentMode = .scaleAspectFit
self.webView.loadRequest(request)
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-14 07:28:31
Prueba esto:
[oneView setScalesPageToFit:YES];
... en lugar de:
oneView.scalesPageToFit = YES;
Espero que eso ayude.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-09 19:45:13