Ho un semplice UIViewController con solo un UIWebView. UIWebView dovrebbe occupare tutto lo spazio disponibile per mostrare il contenuto di un url.Ridimensiona programmaticamente un UIViewController basato sul suo contenitore
Vorrei riutilizzare questo ViewController in vari punti. In alcuni casi verrà inserito in un NavigationController, in alcuni verrà visualizzato come ModalViewController. A volte potrebbe essere all'interno di un TabBarController. Le dimensioni di UIWebView variano da caso a caso.
Qual è il modo migliore per impostare il frame di UIWebView senza utilizzare Interface Builder? In altre parole, come dovrei inizializzare webViewFrame nel seguente codice? O c'è qualcos'altro che mi manca?
- (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];
}
ho provato con diverse possibilità (self.view.frame, self.navigationController.view.frame, etc.), ma nulla sembra funzionare per tutti i casi.
Grazie!
Grazie per la rapida risposta, Darren. Entrambe le opzioni risolvono la domanda. Tuttavia, c'è qualcosa che non capisco. Perché non posso usare self.view.frame come webViewFrame nel mio esempio di codice? Se self.view.frame non ha la dimensione giusta in viewDidLoad? – hpique
self.view viene ridimensionato dopo viewDidLoad. In effetti, può essere ridimensionato in qualsiasi momento per una serie di motivi (ad esempio, la barra del titolo call-in-progress). Pertanto, è necessario impostare sempre la maschera di autorizzazione in modo che le viste secondarie vengano ridimensionate correttamente. – Darren
Interessante. Quindi non c'è in realtà alcun modo per conoscere l'effettiva cornice di self.view in viewDidLoad, quindi? – hpique