2013-03-20 13 views
5

sto creando un UIView utilizzando il seguente codice:UIView schermo intero

UIview* baseView = [[UIview alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; 
//self.view = baseView; 
[self.view addSubview:baseView]; 
[baseView setBackgroundColor:[UIColor blackColor]]; 
baseView.userInteractionEnabled = YES; 
baseView.alpha = 0.7; 

L'unico problema è che, anche se sto usando l'opzione mainScreen per impostarlo a schermo intero, appare a schermo intero ad eccezione di un 5 centimetri linea nella parte superiore della UIWindow. c'è qualche ragione per questo?

+0

self.view è la vista corrente dal costruttore di interfaccia – Alessandro

+0

Potrebbe fornire uno screenshot? – Kunal

risposta

15

Ok, quindi il motivo per cui questo accade è perché [[UIScreen mainScreen] applicationFrame] restituirà il frame della finestra meno la dimensione della barra di stato se è visibile.

per risolvere il problema in modo semplice potrebbe essere:

UIView* baseView = [[UIView alloc] initWithFrame:CGRectMake(0, 
                  0, 
                  [[UIScreen mainScreen] applicationFrame].size.width, 
                  [[UIScreen mainScreen] applicationFrame].size.height)]; 
//self.view = baseView; 
[self.view addSubview:baseView]; 
[baseView setBackgroundColor:[UIColor blackColor]]; 
baseView.userInteractionEnabled = YES; 
baseView.alpha = 0.7; 
+0

wow ottima risposta, non ci avevo nemmeno pensato. Sì, il divario è la dimensione della barra di stato :) – Alessandro

+3

Penso che tu voglia [UIScreen mainScreen] .bounds non [UIScreen mainScreen] .applicationFrame –

+1

funziona ma è mostrato sotto la barra delle schede e la barra di navigazione. –