2010-06-25 13 views
12

Perché mi vedo in alcuni esempi di codice da parte di Apple (come PhotoScroller), che devo fare quanto segue in loadView:limiti UIScreen contro applicationFrame

CGRect frame = [[UIScreen mainScreen] bounds]; 

invece di

CGRect frame = [[UIScreen mainScreen] applicationFrame]; 

Fa una differenza per ottenere il frame dello schermo principale?

risposta

17

ApplicationFrame è la dimensione dello schermo meno la dimensione della barra di stato (se visibile), i limiti sono le dimensioni dello schermo indipendentemente dalla barra di stato.

Quindi applicationFrame restituirà CGRectMake(0,0,320,460) presumendo che l'app abbia la barra di stato impostata in modo che sia visibile, mentre i limiti restituiscono CGRectMake(0,0,320,480) nelle stesse condizioni. Questi numeri presumono le dimensioni dello schermo per iPhone/iPod Touch.

UIScreen Class Reference

+8

Potrei sbagliarmi, ma ApplicationFrame non restituisce CGRectMake (0, 20, 320, 460)? Dove 20 è l'offset della barra di stato ... –

+2

Non ti sbagli, Niels :). L'offset y sarà indicato come 20 con una barra di stato, non con 0. – Nate

+0

Ciao @jamone, cosa succede se viene visualizzato l'Hotspot personale? Sembra prendere 20 punti di altezza (come la barra di stato). ApplicationFrame restituire CGRectMake (0, 40, 320, 440) su iPhone 3,5 pollici e CGRectMake (0, 40, 320, 528) su 4 pollici uno? – Cong

2

iOS 9 Update

Quando si utilizza la funzione Split View sul iPad, applicationFrame restituisce la dimensione della finestra dell'applicazione. bounds restituisce sempre la dimensione del dispositivo.

+2

'-applicationFrame' era ** deprecato in iOS 9 ** –