2014-09-09 12 views
8

Ho creato un modulo semplice in cui aggiungo la sottoview a UIWindow. Nel simulatore iOS 7 (Xcode 5.1.1) Ho stampato self.windows e ottengo:Frame UIWindow in ios 8 diverso da iOS 7 in Landscape

<UIWindow: 0x8db1670; frame = (0 0; 768 1024); autoresize = W+H; gestureRecognizers = <NSArray: 0x8db1a70>; layer = <UIWindowLayer: 0x8db17d0>> 

ma su iOS 8 (Xcode 6 beta 6) ottengo:

<UIWindow: 0x794320d0; frame = (0 0; 1024 768); gestureRecognizers = <NSArray: 0x79437a80>; layer = <UIWindowLayer: 0x7943c400>> 

La domanda è: perché c'è una differenza nella proprietà frame?

+0

guardare qui, http://stackoverflow.com/questions/24150359/is-uiscreen-mainscreen-bounds-size-becoming-orientation-dependent-in-ios8 – Jageen

risposta

9

Probabilmente nella vostra AppDelegate si inizializzare il vostro UIWindow come questo

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

Prima di iOS 8 proprietà limiti di UIScreen restituito il rettangolo di delimitazione dello schermo fisico (cioè, ritratto), ma a partire da iOS 8 delimita modifiche quando il dispositivo ruota documentation.

Ora è possibile utilizzare nativeBounds se si desidera ottenere il rettangolo di delimitazione dello schermo fisico.

Nota: nativeBounds restituisce lo schermo in pixel ma i limiti lo restituiscono in punti.

0

La mia soluzione per questo problema era solo di ignorare il:

CGAffineTransformMakeRotation 

su iOS 8 e ora tutto funziona per me! grazie :)

+3

e come si potrebbe fare? – whyoz

+0

Non la più utile delle risposte. Cura di elaborare? – absessive

Problemi correlati