Tengo un UIViewController simple con solo UIWebView. UIWebView debe tomar todo el espacio disponible para mostrar el contenido de una url.Redimensionar el tamaño de un UIViewController según su contenedor
Me gustaría volver a utilizar este ViewController en varios lugares. En algunos casos, se insertará en NavigationController, en algunos se mostrará como ModalViewController. A veces puede estar dentro de un TabBarController. El tamaño de UIWebView variará según el caso.
¿Cuál es la mejor manera de establecer el marco de UIWebView sin usar el Generador de interfaces? En otras palabras, ¿cómo debo inicializar webViewFrame en el siguiente código? ¿O hay algo más que me estoy perdiendo?
- (void)viewDidLoad {
[super viewDidLoad];
UIWebView* webView = [[UIWebView alloc] initWithFrame:webViewFrame];
webView.delegate = self;
NSURLRequest* request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
[webView loadRequest:request];
[self.view addSubview:webView];
[webView release];
}
He tratado con diferentes posibilidades (self.view.frame, self.navigationController.view.frame, etc.), pero nada parece funcionar para todos los casos.
Gracias!
Gracias por la rápida respuesta, Darren. Ambas opciones resuelven la pregunta. Sin embargo, hay algo que no entiendo. ¿Por qué no puedo usar self.view.frame como webViewFrame en mi ejemplo de código? ¿No debería self.view.frame tener el tamaño correcto en viewDidLoad? – hpique
self.view se redimensiona después de viewDidLoad. De hecho, puede redimensionarse en cualquier momento por varias razones (por ejemplo, la barra de título de la llamada en curso). Por lo tanto, siempre debe configurar su Masteringización de modo que sus sub-vistas se cambian de tamaño correctamente. – Darren
Interesante. Entonces, ¿realmente no hay forma de conocer el marco real de selfview en viewDidLoad, entonces? – hpique