2013-11-05 6 views
6

(iOS 7.0.3, Xcode 5.0.1)black-out la rotazione dell'interfaccia quando si utilizza la seconda UIWindow con RootViewController

ho una seconda UIWindow nella mia app utilizzato per visualizzare una lente d'ingrandimento su misura al di sopra della barra di stato. Tuttavia, una volta impostato il rootViewController di questa finestra (per la rotazione dell'interfaccia &), la finestra principale diventa nera durante l'animazione di rotazione dell'interfaccia.

Per riprodurre: creare un'applicazione iOS vista singola e aggiungere quanto segue al UIViewController principale.

// To @interface: 
@property (nonatomic, strong) UIWindow *secondWindow; 
// In viewDidLoad: 
self.secondWindow = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 
self.secondWindow.rootViewController = [[UIViewController alloc] initWithNibName:nil bundle:nil]; 
self.secondWindow.hidden = NO; 

Qualsiasi aiuto apprezzato.

risposta

5

Aggiungerò un'altra risposta, perché ho trovato una soluzione che funziona davvero. Imposta il colore di sfondo della finestra, così come il colore di sfondo della vista del controller di visualizzazione su un colore con un alfa di 0. Non usare clearColor, ma piuttosto usa qualcosa come greenColor] colorWithAlphaComponent:0.0]; Funziona.

+0

clearColor funziona bene su iOS 8. – Andy

+0

@Andy Non nella mia esperienza. Se la vista del controller della vista ha una vista di sfondo 'clearColor', a rotazione lo sfondo diventa nero. –

+2

I rootViewController.view.backgroundColor non è impostato su nulla (nil) e UIWindow.backgroundColor = clearColor. Tutto bene. – Andy

1

Secondo un ingegnere Apple nei forum dev, questo è previsto a causa della finestra che aggiunge uno sfondo nero per evitare di vedere le cose dietro di esso (cioè dietro la finestra principale normalmente). Ho aperto e rilasciato il bug tracker Apple, # 15398141.

Tuttavia, ho risolto il problema nascondendo la finestra in willRotateToInterfaceOrientation:duration: e rilevandola in didRotateFromInterfaceOrientation:, che fortunatamente non è un grosso problema in questo caso.

1

Questo è un problema noto e sono disponibili molti radar. La soluzione migliore finora per me è aggiungere una vista come sottoview alla finestra e gestire la rotazione da soli. Funziona bene

+1

Sì, questo è anche un buon approccio. Si noti inoltre che non sarà possibile utilizzare l'aspetto della barra di stato basato su UIViewController di iOS 7, poiché interrogherà la seconda UIWindow (anche senza il set rootViewController). –

0

Marca window.opaque = No il cui valore predefinito è SÌ. Nel mio caso ha risolto il problema.

Problemi correlati