¿Cómo dimensionar UIWebView en UIModalPresentationFormSheet?

Probé todas las permutaciones conocidas por la humanidad y no puedo hacer que un UIWebView se dimensione correctamente en una vista de formulario modal para el iPad. La página web aún muestra el ancho de retrato de iPad completo de 768 puntos.

¿Dónde y cómo le digo a UIWebView que muestre 540 puntos de ancho?

Pensé que se supone que 'scalesPageToFit' hace esto, pero no funciona.

Intenté configurar la vista web con el tamaño de la vista de formulario que es 540 x 576 con barra de navigation y estado. Sin embargo, la altura es irrelevante.

Intenté agregar un UIWebView a una UIView en un storyboard con todo el set de cambio de tamaño. Luego quité el UIWebView y lo agregué programáticamente.

- (void)viewDidLoad { [super viewDidLoad]; CGRect aFrame = self.view.frame; if (IS_IPAD) { aFrame = CGRectMake(0, 0, FORM_VIEW_WIDTH, FORM_VIEW_HEIGHT); } _webView = [[UIWebView alloc] initWithFrame:aFrame]; [_webView setOpaque:NO]; [_webView setDelegate:self]; [_webView setScalesPageToFit:YES]; self.view = _webView; ... } 

También intenté cargar en viewDidAppear (además de viewDidLoad, viewWillAppear, etc.)

 - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [[self webView] setFrame:CGRectMake(0, 0, FORM_VIEW_WIDTH, FORM_VIEW_HEIGHT)]; [[self webView] setScalesPageToFit:YES]; NSURL *webURL = [NSURL URLWithString:@"http://www.google.com"]; NSURLRequest *request = [NSURLRequest requestWithURL:webURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5.0f]; [[self webView] loadRequest:request]; } 

Cualquier recomendación apreciada.

introduzca la descripción de la imagen aquí

Esto me sigue sucediendo. Publiqué una larga pregunta, luego, dos segundos más tarde, encontré la respuesta.

De todos modos, alguien publicó una solución a este problema aquí: UIWebView: carga el website externo, establece programáticamente la escala de zoom inicial y permite al usuario hacer un zoom posterior

Sin embargo, alteré el script para establecer el ancho en el ancho del iPad:

 - (void)webViewDidFinishLoad:(UIWebView *)webView { NSString* js = @"var meta = document.createElement('meta'); " @"meta.setAttribute( 'name', 'viewport' ); " @"meta.setAttribute( 'content', 'width = 540px, initial-scale = 1.0, user-scalable = yes' ); " @"document.getElementsByTagName('head')[0].appendChild(meta)"; [[self webView] stringByEvaluatingJavaScriptFromString: js]; } 

Tenga en count la parte 'width = 540px, initial-scale = 1.0, escalable por el usuario = yes'

Cambié el ancho al ancho del formulario y la escala a 1.0.

También necesito manejar iPhone, así que haré los ajustes para eso a continuación. Creo que esta solución solo puede ser necesaria para la vista de formulario de iPad.

ACTUALIZACIÓN: la respuesta es de corta duración. Si carga otra página, el tamaño se descarta nuevamente. Volver al punto de partida.

SOLUCIÓN: esta vista solo tendrá que acceder a algunas páginas web que he desarrollado. Por lo tanto, actualicé las pocas páginas web a las que necesito acceder agregando la metalabel a cada una de ellas. Solo necesito acceder a estas páginas y esta es la solución con la que planeo ir. Esto significa que necesito configurar el ancho de la window gráfica a 540px solo para iPad de alguna manera. Lo resolveré a continuación.

 <meta name="viewport" content="width:540, initial-scale=1, maximum-scale=1">