2012-10-02 11 views
5

Ho sfogliato la maggior parte delle domande e provato quasi tutto. Ma la parte cattiva è che il problema è ancora lì.UIWebview in modalità modale viene visualizzato in modalità Ritratto in modalità Paesaggio

Ho un UIVIew che viene sempre avviato in modalità orizzontale e sto presentando una seconda vista (detailView) come una vista modale a schermo intero.

Il detailview ha un UIwebview sopra di esso.

Quando si presenta lo detailView come vista modale, la visualizzazione Web viene visualizzata in modalità verticale.

sto tornando "YES" in shouldAutoRotateToInterfaceOrientation e anche hanno fissato autoresize, autoresizingMask e scalePageToFit proprietà.

Quando ruoto il dispositivo e quando detailView è in primo piano, la vista Web si dispone correttamente.

Il problema riguarda solo la presenza di modalView per la prima volta.

La rotazione del dispositivo sta regolando correttamente il layout.

+0

e ho anche provato ad installare la barra di stato in viewWillAppear di vista modale ., ovvero [[UIApplication sharedApplication] setStatusBarOrientation: self.interfaceOrientation] ... Anche questo non funziona –

+0

: prova questo - crate one custom viewController (say - FirstViewController) della classe UIViewController. in questo VC, supporta entrambi gli orientamenti (Porto e Terra).Quindi crea SecondViewController che sarà una sottoclasse di FirstViewController, ovviamente in questo modo creerai UIView con la modalità orizzontale e farai lo stesso come hai fatto tu. – Nayan

+1

La modalità 'landscape' o' portrait' di termins è correlata a 'UIViewController' ma non a' UIView'. Quindi potresti chiarire cosa intendi in modalità verticale di 'UIWebView'. Quale metodo usi per mostrare 'UIWebView' sopra' detailview'? – onegray

risposta

0

OK. Prima di tutto, la domanda che avevo postato non era chiara. La mia domanda era che, quando caricavo una webview, in verticale, caricava gli elementi della webview in modalità orizzontale (CSS) e veniva caricata come modalità verticale (CSS) con orientamento orizzontale.

Si scopre che non stavo applicando lo stile CSS corretto.

La correzione ho fatto è stato: Nel metodo viewDidLoad e willAnimateRotation, sto inviando una notifica al mio javascript per aggiornare lo stile in base all'orientamento :)

+0

potresti per favore mostrare il codice per questo - Sto avendo gli stessi problemi ma non ho idea di quando si tratta di javascript – iOSProgrammingIsFun

+0

@iOSProgrammingIsFun Puoi approfondire il tuo problema? Ho fatto questa cosa prima o poi. Devo cercare il mio codice. –

+0

Ok, ho un viewcontroller A presenta il controller vista B modalmente, e in stile a schermo intero. Inside VC B è un intero schermo di uiwebview. Quella webview è usata per mostrare un sito web specifico - per esempio Wikipedia. Se l'app viene eseguita in verticale, la pagina Web viene formattata per essere ritratta e viene ridimensionata per adattarla alla vista Web, anche se scalestofit non è spuntato nel builder dell'interfaccia. Avevo la stessa pagina aperta in safari mobile, la larghezza della pagina supera la larghezza dello schermo ed è più leggibile, può anche essere ingrandita, dove non può farlo la visualizzazione web in VC B. Anche se VC B viene ruotato, la pagina è incasinata – iOSProgrammingIsFun

1

Se si esegue la vostra applicazione su iOS 6 sarà necessario il seguente codice nel controller di vista modale per sostenere l'orientamento orizzontale:

- (NSUInteger)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskLandscape; 
} 

- (BOOL) shouldAutorotate { 
    return YES; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { 
    return UIInterfaceOrientationLandscapeLeft; 
} 

Inoltre, assicurarsi che si sta testando il dispositivo reale in contrapposizione al simulatore perché l'auto-rotazione si comporta diversamente sul simulatore.

3

Per quanto ne so, ModalViews su iPhone non supporta Landscape View. La custodia potrebbe essere diversa per iPhone 5.

Ma sembra che tu stia impostando ModalView e non la WebView in orizzontale, suggerirei un approccio diverso alla gestione di questo.

Per esempio si potrebbe animare la detailview dentro come un ModalView modo che inizia con l'orientamento corretto

0

che farà il trucco:

CGAffineTransform transform = CGAffineTransformIdentity; 
webView.transform = CGAffineTransformRotate(transform,-M_PI/2); 
Problemi correlati