2012-07-08 19 views
5

Sto riscontrando un problema con la mia UIWebView. Quando la vista viene caricata correttamente con l'orientamento, riempie l'intera pagina perfettamente ecc.UIWebView rotazione orizzontale non riempie la vista

Tuttavia, diciamo se lo carico in verticale, quindi ruoto il dispositivo, la vista web non si riempie completamente sul lato destro e io non posso per la vita di me capire perché.

Questa è la mia opinione ha fatto metodo load

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib 

    if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait){ 

     self.measurementsWebView.frame = CGRectMake(0, 0, 320, 367); 

    }else if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeLeft || [[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeRight){ 

     self.measurementsWebView.frame = CGRectMake(0, 0, 480, 218); 
    } 

    NSString *path = [[NSBundle mainBundle] pathForResource:@"measurements" ofType:@"png"]; 
    [measurementsWebView loadHTMLString:[NSString stringWithFormat:@"<html><body><img src=\"file://%@\"></body></html>",path] baseURL:nil]; 
    measurementsWebView.scalesPageToFit = YES; 

} 

Se mi guardo costruttore di interfaccia che sto cercando di trovare il pannello che mi permette di impostare la larghezza o che cosa mai si voglia chiamare in espansione, ma tutto quello che posso vedere è questo.

enter image description here

qualsiasi aiuto sarebbe molto apprezzato

risposta

1

Nel costruttore di interfaccia, il menu a tendina in cui si dice 'Layout rettangolo', fare clic su di esso e selezionare 'Frame rettangolo'.

In alternativa, è possibile sostituire il metodo willAnimateRotationToInterfaceOrientation: nel controller di visualizzazione e impostare manualmente le coordinate/le dimensioni come si è fatto in viewDidLoad.

+0

strano, anche quando lo faccio non cambia l'aspetto del menu ... Penso che forse ho bisogno di reinstallare xcode. Proverò shouldAutototateToInterfaceOrientation adesso. Tuttavia, cambierà la dimensione del Frame di UIView per adattarlo alla vista orizzontale. – HurkNburkS

+0

Scusa, intendevo scrivere il metodo 'willAnimateRotationToInterfaceOrientation:'. In modo simile a come hai verificato l'orientamento nel metodo 'viewDidLoad', fai lo stesso qui e regola la cornice della vista. – sooper

+0

Per il tuo problema con il generatore di interfacce, ti consiglio di leggere questo post [qui] (http://stackoverflow.com/questions/9370072/xcode-4-3-not-presenting-autoresizing-panel-in-size-inspector) – sooper

4

Invece di impostare il frame manualmente, è possibile anche impostare le maschere di auto-ridimensionamento come:

measurementsWebView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

che ridimensionare il WebView nel caso in cui non si hanno altri elementi sullo schermo (che, prendilo, non ce l'hai, dai valori che hai usato durante il ridimensionamento measurementsWebView). Oppure, direttamente dal pennino, come mostrato nell'immagine seguente:

auto-resize from nib

Le maschere possono essere impostate facendo clic sulle barre rosse nella casella denominata ridimensionamento automatico verso il basso a sinistra.

3

viewDidLoad viene eseguito una volta - quando la vista viene caricata.

Se si desidera regolare manualmente il frame quando si verifica la rotazione, aggiungere il codice a per ridimensionarlo in viewDidLayoutSubviews che viene chiamato ogni volta che la vista ruota.

-(void)viewDidLayoutSubviews { 

    [super viewDidLayoutSubviews]; 

    self.measurementsWebView.frame = self.view.bounds; 

} 
+0

semplice e facile, grazie per questo – peroija

Problemi correlati